Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z zapisem/odczytem danych z pliku

Ostatnio zmodyfikowano 2010-07-21 15:36
Autor Wiadomość
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:
C/C++
#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.
P-20045
lenrokskate
» 2010-07-21 13:02:58
dlatego, że wczytujesz za pomocą >> czyli wczytujesz char*

musisz użyć funkcji atoi
P-20046
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.
P-20047
piotrwalkusz1
Temat założony przez niniejszego użytkownika
» 2010-07-21 14:34:44
Teraz mam taki kod:
C/C++
#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:
C/C++
#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ł.  
P-20049
Elaine
» 2010-07-21 15:36:09
/me wrote:
@OP: Przed odczytaniem zrób seek na początek pliku, wtedy powinno odczytać poprawnie.
P-20052
« 1 »
  Strona 1 z 1