Czyszczenie strumienia - pomijanie składowej

0

Czesc, mam taki oto kod :

cout<<"Podaj marke pojazdu, wpisz koniec, aby zakonczyc  : "<<endl;
    if(a.marka == "koniec")
        return false;
    getline(cin, a.marka);
    cout<<"Podaj model pojazdu : "<<endl;
    getline(cin, a.model);
    cout<<"Podaj pojemnosc silnika : "<<endl;
    cin>>a.pojemnosc;
    cout<<"Podaj moc silnika : "<<endl;
    cin>>a.moc;
    return true;
 

Chodzi o to, ze podczas drugiego wypelniania danych pomijane zostaje skladowa "marka". Czy moglby mi ktos wyjasnic w jaki sposob to dziala ? Bylbym naprawde wdzieczny za objasnienie mechnizmu (kiedy stosowac ? jak ? po co ? etc)
Dzieki ! pozdro

0

Nie rozumiem pytania ale to:

    if(a.marka == "koniec")
        return false;
    getline(cin, a.marka);

To jakis WTF bo sprawdzasz warunek zanim wczytasz wartość...

0

Wiem, poprawilem to juz, z reszta to nie wazne.
Chodzi o to, przy drugiej probie podania wartosci a.marka wyskakuje Od razu :

Podaj marke pojazdu, wpisz koniec, aby zakonczyc  :
Podaj model pojazdu :

bez mozliwosci wpisanie do zmiennej marka.

0

A no to trzeba bylo tak od razu. Sprawa jest prosta. cin>>cośtam wczytuje do pierwszego białego znaku. W szczególności nie usuwa z bufora znaku nowej linii. W efekcie getline() łyka tą pustą liniję.

0

A co jesli bede chcial wczytac dwu czlonowa nazwe ? Na przyklad imie : Anna Maria ?

0

No to cin>> czy tego nie wczyta ;]

0

Do pierwszego pustego znaku, musialoby byc Anna_Maria, a przy Anna Maria wczyta - Anna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1