Wczytywanie z plku tekstowego po znaku
Ostatnio zmodyfikowano 2013-07-18 17:40
Kraver Temat założony przez niniejszego użytkownika |
Wczytywanie z plku tekstowego po znaku » 2013-07-18 10:29:52 Natrafiłem na dość dziwny błąd podczas wczytywania bool WriteTextFromFile() { using namespace std; ifstream inFile; inFile.open( "test.txt" ); if( !inFile.is_open() ) return 0; char input; while( inFile.good() ) { inFile.get( input ); SaveCodeToFile( input ); } inFile.close(); return 1; } bool SaveCodeToFile( char input ) { using namespace std; ofstream outFile; outFile.open( "binar.txt", ios_base::app ); outFile << bitset < 8 >( input ); outFile.close(); return 0; } Z jakiś przyczyny petla while wykonuje sie zawsze n+1 razy gdzie n to liczba znaków. Potrafię rozwiązać ten problem umieszczając warunek:Cpp code if( inFile.good() ) { SaveCodeToFile( input ); cout << bitset < 8 >( input ); } Zastanawia mnie czy jest lepsze rozwiązanie. Może da sie jakoś ulepszyć warunek wykonywania się petli ? Drugi błąd polega na zapisaniu do pliku dodatkowego cudzysłowu na koncu pliku. Do konsoli zostaje przesłana poprawna wartość. bool WriteTextFromFile() { using namespace std; ifstream inFile; inFile.open( "test.txt" ); if( !inFile.is_open() ) return 0; char input; while( inFile.good() ) { inFile.get( input ); SaveCodeToFile( input ); cout << bitset < 8 >( input ); } inFile.close(); return 1; }
bool SaveCodeToFile( char input ) { using namespace std; ofstream outFile; outFile.open( "binar.txt", ios_base::app ); outFile << bitset < 8 >( input ); outFile.close(); return 0; } |
|
pekfos |
» 2013-07-18 12:19:18 eofbit jest ustawiany dopiero przy próbie odczytu, gdy nie ma już niczego w buforze. good() zwraca false, gdy jakakolwiek flaga błędu jest ustawiona (w tym eofbit). |
|
m4tx |
» 2013-07-18 12:47:46 Dlaczego używasz using namespace std; w każdej funkcji zamiast wstawić go na początku pliku, po #include 'ach? |
|
Monika90 |
» 2013-07-18 17:40:56 @m4tx Może nie chce zaśmiecać globalnej przestrzeni nazw? |
|
« 1 » |