Wyświetlanie stringów - nałożenie jeden na drugi
Ostatnio zmodyfikowano 2014-09-17 16:40
Mahtar Temat założony przez niniejszego użytkownika |
Wyświetlanie stringów - nałożenie jeden na drugi » 2014-09-17 16:09:46 Witam. Mam stworzoną klasę, w której przechowuję dane osób oraz dwie metody: do wyświetlania osób oraz do wczytywania danych z pliku. class Person { private: string firstname; string lastname; int age; public: Person(); void showPerson(); void Load( std::ifstream & file ); };
void Person::Load( std::ifstream & file ) { getline( file, firstname ); getline( file, lastname ); file >> age; }
void Person::showPerson() { cout << "Osoba: " << firstname << " " << lastname << "\nWiek: " << age; }
Program wczytuje dane z pliku, ale mam problem z ich wyświetleniem. Przykładowo wczytuję z pliku dane: Jan Nowak 34Gdy wyświetlę za pomocą: cout << "Osoba: " << firstname << "\n" << lastname; To wszystko jest dobrze - wyświetli się wszystko prawidłowo: Osoba: Jan NowakLecz gdy wyświetlę to bez znaku przejścia do nowej linii: cout << "Osoba: " << firstname << lastname; To napotykam na problem, a mianowicie w konsoli wyświetli się: "Nowak: Jan". Tak jak by wyświetliło najpierw: "Osoba: Jan", a następnie nadpisało od początku linii Nowak - string nakłada się na stringa. W czym tkwi problem ? |
|
Mahtar Temat założony przez niniejszego użytkownika |
» 2014-09-17 16:27:31 Ok, widzę że problem tkwi w getline bo jak zmieniłem wczytywanie z pliku na: file >> player.firstname; file >> player.lastname; file >> player.age; To problem zniknął. Jednakże jak bym zmienił program, że do stringa ma wczytać kilka wyrazów z jednej linii, a nie tylko jednen, to wtedy muszę użyć getline i problem ponownie się pojawi. |
|
Monika90 |
» 2014-09-17 16:40:50 Albo otworzyłeś ten plik tekstowy w trybie binarnym, albo pochodzi on z Windows, a używasz go w Linuksie. |
|
« 1 » |