Problem z zapisem/odczytem danych z pliku
Ostatnio zmodyfikowano 2010-07-21 15:36
piotrwalkusz1 Temat założony przez niniejszego użytkownika |
Problem z zapisem/odczytem danych z pliku » 2010-07-21 12:49:09 Mam taki problem. Najlepiej to wyjaśni poniższy kod: #include <fstream> #include <iostream>
using namespace std;
int main() { fstream plik( "tekst.txt", ios::in | ios::out ); plik << 10; int liczba; plik >> liczba; cout << liczba; system( "PAUSE" ); return 0; } Stworzyłem dokument tekstowy o nazwie tekst. Program powinien zapisać 10 do tego pliku, a następnie wyświetlić 10. Po zakończeniu programu w pliku tekst który był pusty pisało 10, a strumień cout wyświetlił mi -2142178138 i nie wiem dlaczego. Był bym bardzo wdzięczny za pomoc. Przy okazji chciałbym się dowiedzieć jak tworzyć nowe pliki (np. tekstowe). Z góry dziękuje za pomoc. |
|
lenrokskate |
» 2010-07-21 13:02:58 dlatego, że wczytujesz za pomocą >> czyli wczytujesz char*
musisz użyć funkcji atoi |
|
Elaine |
» 2010-07-21 13:15:09 Heh, większej głupoty dawno tu nie było :> Operator >> dokonuje formatowanego wejścia, skoro czyta do int, to odczytana zostanie liczba - o tym nawet chyba w pierwszych lekcjach kursu było :> Nie uważałeś, przyznaj się :> @OP: Przed odczytaniem zrób seek na początek pliku, wtedy powinno odczytać poprawnie. |
|
piotrwalkusz1 Temat założony przez niniejszego użytkownika |
» 2010-07-21 14:34:44 Teraz mam taki kod: #include <fstream> #include <iostream> #include <string> using namespace std; int main() { fstream plik( "tekst.txt", ios::in | ios::out ); plik << "10"; string liczba; plik >> liczba; cout << liczba; system( "PAUSE" ); return 0; } Jest ten sam format (string), zapisuje mi 10 do pliku tekst, ale teraz mi nic nie wyświetla. Teraz do pliku wpisze ręcznie 20 i zmienię kod na: #include <fstream> #include <iostream> #include <string> using namespace std; int main() { fstream plik( "tekst.txt", ios::in | ios::out ); string liczba; plik >> liczba; cout << liczba; system( "PAUSE" ); return 0; } Usunąłem tylko jedną linijkę, a że wcześniej było wpisane 20 to pokazało 20. Za każdym razem tylko jedna operacja na pliku jest wykonywana, a inne są błędnie robione jakby plik nie istniał. |
|
Elaine |
» 2010-07-21 15:36:09 /me wrote:@OP: Przed odczytaniem zrób seek na początek pliku, wtedy powinno odczytać poprawnie. |
|
|
« 1 » |