ios::nocreate i filbehandling på C++
Jeg kører et måleprogram på nogle FreeBSD maskiner, og har netop installeret 5.2 på en ny pc som også skal køre programmet, hvor der er en ny compiler GCC 3.3.3 (den jeg før brugte var GCC 2.95.(4/5).på den gamle GCC giver det ikke nogen compiler fejl, og programmet kører fint.
I mellemtiden er GCC 3.3.3 gået over til at give advarsler hvis man bruger de gamle headere:
#include <iostream.h>
#include <fstream.h>
og ellers anbefale at man brguer de nye headere:
#include <iostream>
#include <fstream>
using namespace std;
med namespace tingeltangel..
Det har jeg så gjort i alt min kode og den brokker sig ikke længere over forældede headere, men derimod dette:
g++ -I/usr/local/include/mysql/ -pthread *.cc -o rawMeasuring.out -L/usr/local/lib/mysql/ -lmysqlclient
ScanList.cc: In member function `void ScanList::generateCSVFile(int&, int&)':
ScanList.cc:189: error: `noreplace' is not a member of type `
std::basic_ios<char, std::char_traits<char> >'
ScanList.cc:193: error: `nocreate' is not a member of type `
std::basic_ios<char, std::char_traits<char> >'
ScanList.cc:200: error: `noreplace' is not a member of type `
std::basic_ios<char, std::char_traits<char> >'
ScanList.cc:204: error: `nocreate' is not a member of type `
std::basic_ios<char, std::char_traits<char> >'
ScanList.cc:213: error: `noreplace' is not a member of type `
std::basic_ios<char, std::char_traits<char> >'
TimeClient.cc: In member function `void TCPacketReciever::execute()':
TimeClient.cc:613: error: `noreplace' is not a member of type `
std::basic_ios<char, std::char_traits<char> >'
TimeClient.cc:617: error: `nocreate' is not a member of type `
std::basic_ios<char, std::char_traits<char> >'
Et eksempel på en linje der fejler er:
ofstream outfile(filename, ios::out | ios::noreplace);
Gør jeg noget forkert?
Er der lavet om på hvordan fstream virker, eller er GCC stadig ikke forbi alle børnesygdomme i denne version?
PS. GCC 3.3.3 anvendes også på linuxplatforme, så hvis du bruger den der, er dine erfaringer også meget velkomne..