Witajcie, mam problem ze zrozumieniem pewnego zjawiska. Otóż jeśli mam taki kod:
#include <iostream>
using namespace std;
struct DC_and_Marvel
{
string who;
string title;
int years;
};
int main()
{
DC_and_Marvel *ps = new DC_and_Marvel;
cout << "Jaki tytul nosi komis: ";
getline(cin, (*ps).title);
cout << "Kto napisal komiks: ";
getline(cin, (*ps).who);
cout << "Jaki rok wydania: ";
cin>>(*ps).years;
cout << (*ps).who << ", " << (*ps).title << ", " << (*ps).years;
delete ps;
return 0;
}
i on działa bez zarzutu, wszystko rozumiem, ale gdy tylko usunę
getline(cin, (*ps).title);
i skompiluje programik, to po wpisaniu tytułu, drugie pytanie zostaje pomijane i wczytuje kolejne pytanie. Wtedy wystarczy dodać po pierwszym getline cin.sync();
i wszystko działa poprawnie.
Do tej pory dowiedziałem się jak działa bufor czyszczący ale zaskoczyło mnie zachowanie programu bez wypisywania komendy czyszczącej. Dlaczego pojawia mi się pytanie a pomija cina wyświetlając kolejne?
Gdy wyświetlam na końcu wynik, to nie widzi mi nawet spacji ani zera. Nie jestem pewny tego czego się dowiedziałem, dlatego proszę o pomoc.