Adatbeviteli probléma C++ esetében

Fórumok

Sziasztok!

Nincs még nagy tapasztalatom a c++ nyelvben, ezért aztán beleütköztem
egy adatbekérési problémába.
Tekintsük a következő kis programrészletet:

string s;
int i;

cin >> i;
getline(cin, s);

A gond a következő: A program futtatásakor az történik, hogy az 'i'
bevitele után már nem kéri 's'-et, mert az egész után ütött ENTER
átadódik a 'getline'-nak, és így az 's'-be nem kerül semmi.

A problémát úgy oldottam meg, hogy kétszer írtam le a 'getline'
sorát. Az első elnyeli az előző ENTER-t, a második pedig ténylegesen
bekéri a 's'-t.

Arra kérek tanácsot, hogy lehet ezt korrektebbül megoldani?
Gondoltam arra, hogy 'i' helyett szintén egy egy stringet kérek be,
és azt konvertálom egésszé. Hogy lehet ezt megoldani?
Vagy nan jobb ötletetek?

Előre is kösz! Pelci.

Hozzászólások

Gondoltam arra, hogy 'i' helyett szintén egy egy stringet kérek be, és azt konvertálom egésszé.
Szerintem is. Szvsz minden formazott/vegyes inputot es/vagy ahol nagyon bolondbiztossa'gra kell menni (tehat minden ami nem sajat tesztprogram), erdemes tisztan sztringkent beolvasni es utana maga't a sztringet parzolni okosan, a nyelvnek megfeleloen (C-ben strtok(), egyeb tokenizalas, sscanf(), C++-ban gondolom van string istream tipus, es ha ahhoz tartozik >> operator, akkor azzal).

A.

Köszönöm a tanácsokat!

Szerintem, most már menni fog.
Különösen hasznos volt a link a FAQ-ra.

Üdv: Pelci