arek213 Temat założony przez niniejszego użytkownika |
Jak wyczyścić plik tekstowy ? » 2015-03-14 13:40:51 W internecie znalazłem aby użyć tego: ofstream( "nazwa_pliku" ); i plik zostanie obcięty, lecz u mnie to nie działa. Dodam, że plik mam otwarty jako ofstream. |
|
pekfos |
» 2015-03-14 13:47:03 Nie możesz drugi raz otworzyć plik do zapisu. |
|
Brunon3 |
» 2015-03-14 13:53:28 Nadpisujesz plik podając argument " ". ofstream( "nazwa_pliku" ); to zwyczajne otwarcie pliku do zapisu, a nie jego wyczyszczenie. -BD. |
|
arek213 Temat założony przez niniejszego użytkownika |
» 2015-03-14 13:57:36 ten znak " " dodał mi tylko spację przed tekstem w pliku |
|
aksen |
» 2015-03-14 13:59:55 Porada najlepsza na obecnym etapie:
google ---------> "c++ operacje na plikach"
Potem, kiedy powstanie jakiś kod będzie można dyskutować o błędach. |
|
arek213 Temat założony przez niniejszego użytkownika |
» 2015-03-14 14:01:51 Bo mam taki kod: while( !file.eof() ) { for( int i = 0; i < !file.eof(); ++i ) { file >> name >> surname >> age >> efficacy_current; if(( name.length() > 3 ) &&( surname.substr( surname.length() - 3, surname.length() - 1 ) == "ski" ) &&( efficacy_current > efficacy_previous ) ) { file_edit << " "; surname.replace( 1, surname.length() - 4, surname.length() - 4, '*' ); file_edit << name << " " << surname << " " << efficacy_current << endl; } if(( name.length() > 3 ) &&( surname.substr( surname.length() - 3, surname.length() - 1 ) == "ski" ) &&( efficacy_current == efficacy_previous ) ) { surname.replace( 1, surname.length() - 4, surname.length() - 4, '*' ); file_edit << name << " " << surname << " " << efficacy_current << endl; } efficacy_previous = efficacy_current; } } i jak w kolejnym obiegu pętli mam efficacy_current > efficacy_previous to chcę aby czyściło mi zawartość pliku file_edit, bo chcę aby tylko zapisywało do pliku osobę z najwyższym efficacy,czyli skutecznościa. |
|
Brunon3 |
» 2015-03-14 14:08:43 Otwierasz plik ios::app czy ios::out ? Ustaw na to drugie, a powinno nadpisywać plik, a nie zapisywać do już istniejących danych. PS. Pokaż więcej kodu; m.in. jak otwierasz plik. -BD. |
|
arek213 Temat założony przez niniejszego użytkownika |
» 2015-03-14 14:47:40 cały kod programu : #include <iostream> #include <fstream> #include <string>
using namespace std;
int main() { ifstream file; file.open( "C:\\plik\\pliczek.txt" ); ofstream file_edit; file_edit.open( "C:\\plik\\pliczek.max.txt" ); string name; string surname; int age; float efficacy_previous = 0; float efficacy_current; while( !file.eof() ) { for( int i = 0; i < !file.eof(); ++i ) { file >> name >> surname >> age >> efficacy_current; if(( name.length() > 3 ) &&( surname.substr( surname.length() - 3, surname.length() - 1 ) == "ski" ) &&( efficacy_current > efficacy_previous ) ) { file_edit << " "; surname.replace( 1, surname.length() - 4, surname.length() - 4, '*' ); file_edit << name << " " << surname << " " << efficacy_current << endl; } if(( name.length() > 3 ) &&( surname.substr( surname.length() - 3, surname.length() - 1 ) == "ski" ) &&( efficacy_current == efficacy_previous ) ) { surname.replace( 1, surname.length() - 4, surname.length() - 4, '*' ); file_edit << name << " " << surname << " " << efficacy_current << endl; } efficacy_previous = efficacy_current; } } file_edit.seekp( 0, ios::end ); if( file_edit.tellp() == 0 ) { file_edit << "\n"; } return 0; } Kod na wklej.to , nieco przejrzyściej: http://wklejto.pl/223739 |
|
« 1 » 2 |