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

Wyświetlanie stringów - nałożenie jeden na drugi

Ostatnio zmodyfikowano 2014-09-17 16:40
Autor Wiadomość
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.

C/C++
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
34

Gdy wyświetlę za pomocą:
cout << "Osoba: " << firstname << "\n" << lastname;

To wszystko jest dobrze - wyświetli się wszystko prawidłowo:

Osoba: Jan
Nowak


Lecz 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 ?
P-117107
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:

C/C++
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.
P-117109
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.
P-117110
« 1 »
  Strona 1 z 1