[c++] Dziwne zachowanie fstream
Ostatnio zmodyfikowano 2013-05-05 14:44
wojownik266 Temat założony przez niniejszego użytkownika |
[c++] Dziwne zachowanie fstream » 2013-05-05 13:46:01 Mógłby ktoś powiedzieć co jest źle napisane w tym programie i dlaczego funkcja nowy_czytelnik w takiej postaci jak niżej.. Nie zapisuje wprowadzanych danych do pliku.? Kiedy w funkcji main wywołam samą funkcje to wszystko jest ok. Miłego dnia! #include <iostream> #include <string> #include <fstream> using namespace std;
int nowy_czytelnik() { ofstream out( "czytelnik.txt", ios::app ); string line; cout << "Podaj imie i nazwisko:"; if( out.is_open() ) { getline( cin, line ); out << line << endl; } out.close(); return 0; }
int main() { int i = 0; cout << "BIBLIOTEKA NARODOWA" << endl; cout << "-------------------" << endl; cout << "----MENU WYBORU----" << endl; cout << "-------------------\n" << endl; cout << "[1].Dodaj czytelnika" << endl; cout << "\nWpisz numer opcji:"; cin >> i; switch( i ) { case 1: nowy_czytelnik(); break; } cin.get(); return 0; }
|
|
Monika90 |
» 2013-05-05 14:06:29 To dlatego, że jak wpiszesz numer opcji i naciśniesz Enter, to w strumieniu zostaje znak końca wiersza. Bo cin >> i; wczyta tylko liczbę, a pozostawia w strumieniu to co było po niej. Więc kiedy później wywołasz getline, to getline natrafi od razu na znak końca wiersza i wczyta pustą linię. Dopisane: Dodanie cin.ignore(); po cin >> i; rozwiąże problem. |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2013-05-05 14:09:46 Wszystko to co napisałaś jest dla mnie jasne i zrozumiałe.... A czy mogłabyś napisać jak obejść ten problem ilustrując to kawałkiem odpowiedniego kodu? Bedzie to coś w rodzaju "getline(cin,li).get()"? |
|
pekfos |
» 2013-05-05 14:25:02 |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2013-05-05 14:44:39 Bardzo bardzo dziękuję za odpowiedzi i zamykam temat:D |
|
« 1 » |