drudl Temat założony przez niniejszego użytkownika |
fstream nie moge dopisać danych do pliku txt » 2014-10-19 23:46:32 Problem jak w temacie, a dodatkowo funkcje tellp i tellg pokazują -1, chociaż tekst się wyświetla. To mój kod: std::fstream plik; plik.open( "tekst.txt", std::ios::in | std::ios::out ); if( plik.good() ) { textprintf( screen, font, 0, 0, makecol( 255, 255, 128 ), "Udalo sie otworzyc plik tekst.txt" ); } else { textprintf( screen, font, 0, 0, makecol( 255, 255, 128 ), "Nie udalo sie otworzyc pliku tekst.txt" ); } std::string odczytanyTekst;
std::string wiersz; while( std::getline( plik, wiersz ) ) { odczytanyTekst += wiersz; }
int y = 10; try { for( int pozycja = 0, x = 0; 1; ++pozycja ) { std::string znak; std::string nl( "\\" ); znak = odczytanyTekst.substr( pozycja, 1 ); if( znak == nl ) { std::string n( "n" ); znak = odczytanyTekst.substr( ++pozycja, 1 ); if( znak == n ) { y += 10; x = 0; continue; } } textout_ex( screen, font, znak.data(), x, y, makecol( 250, 250, 250 ), - 1 ); x += 8; } } catch( std::out_of_range ) { textout_ex( screen, font, "Koniec wczytywania", 0, y += 10, makecol( 250, 250, 250 ), - 1 ); }
y += 10;
std::string tekst( "Ma na imie Puszek." ); textprintf( screen, font, 0, y += 10, makecol( 255, 255, 200 ), "wskaznik zapisu %d", plik.tellp() ); textprintf( screen, font, 0, y += 10, makecol( 255, 255, 200 ), "wskaznik wczytywania %d", plik.tellg() ); plik.write( tekst.data(), tekst.length() ); textprintf( screen, font, 0, y += 10, makecol( 255, 255, 200 ), "wskaznik zapisu %d", plik.tellp() ); textprintf( screen, font, 0, y += 10, makecol( 255, 255, 200 ), "wskaznik wczytywania %d", plik.tellg() ); y += 10;
while( std::getline( plik, wiersz ) ) { odczytanyTekst += wiersz; }
try { for( int pozycja = 0, x = 0; 1; ++pozycja ) { std::string znak; std::string nl( "\\" ); znak = odczytanyTekst.substr( pozycja, 1 ); if( znak == nl ) { std::string n( "n" ); znak = odczytanyTekst.substr( ++pozycja, 1 ); if( znak == n ) { y += 10; x = 0; continue; } } textout_ex( screen, font, znak.data(), x, y, makecol( 250, 250, 250 ), - 1 ); x += 8; } } catch( std::out_of_range ) { textout_ex( screen, font, "Koniec wczytywania", 0, y += 10, makecol( 250, 250, 250 ), - 1 ); }
readkey();
plik.close(); Problem w tym, że nic się nie dopisuje. Nie wiem zupełnie co z tym zrobić. |