Problem przy zapisywaniu do pliku


(Salazaar) #1

Witam, mam problem przy zapisywaniu danych do pliku. Chodzi o kto, ze jak chce zapisac "Kaziu Wichura" to zapisuje mi tylko "Kaziu". Jak zrobić, żeby zapisywał wszystko a nie tylko 1 ciag znakow?


(Marcinbittel) #2

Jaki język ??


(Ryan) #3

Stawiam browara, że problem masz przy odczytywaniu a nie przy zapisywaniu. Jeśli wysyłasz zmienną do pliku << to cała jej wartość zostanie zapisana. Ty w zmiennej masz tylko jedno słowo. Dlaczego? Bo źle je odczytałeś.

Poczytaj wreszcie tą ksiażkę, którą niby posiadasz.


(Salazaar) #4

Wlasnie bys przegral browara. Blad jest przy zapisywaniu, dlatego, ze jak otworzylem ten plik tekstowy to tez pojawialo się tylko to jedno słowo.

oto ten kod

cout << "Enter the values: Name, Surname, Adress, Cell phone, Internet communicator, Others (in that order) separated by spaces: \t";

     cin >> zapis;

 fstream plik_zapis;


    plik_zapis.open("database.txt", ios::out | ios::binary | ios::app);


    plik_zapis << zapis << '\r' << '\n' ; // dla ios::binary


    /*

     plik_zapis << zapis << endl ; // dla trybu tekstowego

     */

    plik_zapis.close ();

    cout<< "Entry added successful!";

Co jest źle?

ps. chodzi o C++


(Ryan) #5

Nie przegrałbym browara. Problemem jest to, że nie rozumiesz tego co robisz a ja w przeciwieństwie do Ciebie trochę działającego kodu napisałem. Najwyraźniej jednak jesteś zbyt uparty, żeby zernąć do jakiejkolwiek książki o C++ i dowiedzieć się, że cin czyta tekst do pierwszego białego znaku, czyli do spacji, tabulacji lub końca wiersza. Zatem jeśli wprowadzisz tekst:

ala ma kota

Wczytane zostanie wyłącznie pierwsze słowo. Drugie cin >> zmienna wczyta drugie słowo. Itd. Ale żeby to wiedzieć trzeba cokolwiek o iostream przeczytać a Ty się najwyraźniej wzbraniasz.

Co do browara - nie przegrałem go jak widzisz.


(Salazaar) #6

Więc jak zrobić, żeby wczytywał wszystko a nie tylko do białego znaku?


(Ryan) #7
char variable[256];

cin.getline(variable, 256);

Jeśli zamierzasz zmienić 256 na coś innego - zmień w obu liniach na taką samą wartość. Tylko że zmianę najpierw dobrze przemyśl: musisz wiedzieć czy powinieneś zmienić i dlaczego chcesz zmienić.