Pętla z wpisywaniem char'a

0

Mam taką sobie pętle:

do
    {
        cout<<endl;
        cout<<"Chcesz wpisac(1) wlasnorecznie macierz czy wczytac(2) ja z pliku."<<endl;
        cout<<"Wybierz(1/2)?"<<endl;
        cout<<endl;
        cin>>q;
    }
    while(q!='1'&&q!='2');

Mój problem polega na tym, że wpisując więcej niż jeden znak w momencie

cin>>q

pętla wykonuje się tyle razy ile jest znaków, w konsekwencji wypisując w konsoli zdanie
"Chcesz wpisac(1) wlasnorecznie macierz czy wczytac(2) ja z pliku."
n razy, a chciałbym żeby pojawiało się ono tylko raz bez względu na to ile użytkownik wpisze znaków. Ktoś ma jakiś klawy sposób na to? ;)

0

ciin.ignore();

??

0

Dobra, może źle się wyraziłem chodziło mi o to, że jak się źle wpisze to pojawia się znowu:
"Chcesz wpisac(1) wlasnorecznie macierz czy wczytac(2) ja z pliku." ale tylko jeden raz bez względu na ilość użytych znaków.
No, ale ostatecznie mogę z tego zrezygnować i wywalić te zdanie poza pętle.

0

Jeżeli chcesz pobrać od użytkownika linie tekstu w której ma być opcja, to lepiej użyć getline(cin,str), a nie wczytywać do znaku. Oczywiście się bawić z cin.ignore itp., ale nie potrzebnie to komplikuje kod.

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