Witam
zakladajac ze mamy plik dat.txt w ktorym znajdujasie jakies dane, chce otworzyc ten plik i wpisywac do niego nowe wartosci tylko tak zeby wraz z otwarciem usunely sie stare dane, jak to zrobic?
otworzyc go w trybie do zapisu (nie w trybie dopisywania - append, tylko zapisywania - write)
http://www.cplusplus.com/reference/iostream/ofstream/ofstream/
ofstream plik;
plik.open("plik.dat");
for(int k=0;k<schowek.size();k++)
{
plik<<schowek[k][0]<<" "<<schowek[k][1]<<endl;}
plik<<" "<<endl;
plik.close();
gdzie powinienem wklecic to write ?
powtorze: http://www.cplusplus.com/reference/iostream/ofstream/ofstream/
przeycztales?
zreszta, nie wazne. spojrz na tabelke z flagami i patrz na trunc tak dlugo, az skojarzysz ze masz miec ", ofstream::out|ofstream::trunc)"
tyle ze ja zrobilem tak :
ofstream plik;
plik.open("plik.dat",ofstream::out|ofstream::trunc);
for(int k=0;k<schowek.size();k++)
{
plik<<schowek[k][0]<<" "<<schowek[k][1]<<endl;}
plik<<" "<<endl;
plik.close();
zakladajac ze odpalam program majac jakies dane w pliku to one sie kasuja, i wpisuje nowe ktore sie zapisuja, przy ponownym wywolaniu mojej metody wprowadzone dane sie juz nie kasuja, tylko sa dopisywane
-
ten kod jest inny niz kod z Twojego poprzedniego postu, co masz wiec na mysli mowiac "tyle że ja zrobiłem tak"?
-
zacząłeś od pytania:
zakladajac ze mamy plik dat.txt w ktorym znajduja sie jakies dane, chce otworzyc ten plik i wpisywac do niego nowe wartosci tylko tak zeby wraz z otwarciem usunely sie stare dane, jak to zrobic?
teraz napisałeś:
zakladajac ze odpalam program, majac jakies dane w pliku to one sie kasuja, i wpisuje nowe ktore sie zapisuja
rozumiem więc, że swoj cel osiagnales i teraz masz problem w czyms innym?
odkurzamy napisał(a)
zakladajac ze odpalam program majac jakies dane w pliku to one sie kasuja, i wpisuje nowe ktore sie zapisuja, przy ponownym wywolaniu mojej metody wprowadzone dane sie juz nie kasuja, tylko sa dopisywane
jeżeli Twoja metoda wyglada tak, jak w tym poscie ktory teraz napisales,
i jezeli w Twoim programie, w szczegolnosci w tej metodzie, nie ma wiecej ofstreamow otwierajacych ten plik,
to
albo klamiesz (w co watpie, bo po co),
albo nie wiesz o czym mowisz (co nie jest do wykluczenia),
albo masz ciężko walniety system operacyjny (malo prawdopodobne),
albo uzywasz uszkodzonego kompilatora i/lub uszkodzonej biblioteki std (nie do wykluczenia).
Nawet sumarycznie te rzeczy sa wciaz tak malo prawdopodobne, ze strzelam ze tak sie zawinales, ze wklejasz inny kod niz siedzacy w uruchamianym programie albo ogladasz pliki wyjsciowe nie te co trzeba. Zrob Clean, wywal kopie tego projektu z sasiadujacych katalogow, zrob Rebuild/re-make, i sprawdz jeszcze raz jak sie zachowuje.
serio, jesli nic z tych niestworzonych rzeczy sie nie wydarzylo, ofstream.open z flaga out|trunc sie nie pomylil i zadzialal dobrze, tylko Ty czegos innego nie zauwazyles.
heh, BTW, wiesz, po OPEN wypadaloby sprawdzic czy strumien w ogole sie otworzyl..