Czyszczenie danych z bufora cin

Krwawy Kot
2014-11-06 23:41
Krwawy Kot
0

Wprowadzam jakieś dane do bufora (cin), wykonuję sobie pętlę while np. przez 10 sekund, i teraz jeśli ktoś podczas tych 10 sekund coś wpisze w konsoli to chciałbym to zignorować, a wczytać dopiero dane które zostaną wprowadzone w odpowiednim miejscu.
Bo teraz to działa tak, wszystko co jest wprowadzone podczas działania pętli wędruje do bufora. cin.ignore() i cin.clear() nie czyści mi tego.

while(1){
cout << "Podaj polecenie" << endl;
cin.ignore();
cin >> polecenie;

    if(polecenie = "run"){
        //wykonuj cos przez 10 sekund
    }
    if(...){

    }
    ...
}

Pozostało 580 znaków

2014-11-06 23:46

Rejestracja: 14 lat temu

Ostatnio: 3 dni temu

0
string cmd;
while((cout<<"Podaj polecenie: ")&&(cin>>cmd))
  {
   if(cmd=="run")
     {
      //...
     }
    //...
   else if(cmd=="exit") return 0;
   while(cin.get()!='\n') {}
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Krwawy Kot
2014-11-07 07:29
Krwawy Kot
0

Dzięki @13_Dragon ale to nie do końca pracuje tak jak chce. Potrzebuję w momencie wywołania

cin >>cmd; 

mieć kompletnie czysty bufor, czy komenda wprowadzona w trakcie pracy zawiera błędne dane czy też poprawne bez znaczenia. Chcę zignorować to co zostanie wprowadzone w momencie kiedy coś się wykonuje.

Pozostało 580 znaków

2014-11-07 10:22

Rejestracja: 14 lat temu

Ostatnio: 3 dni temu

0
string cmd;
while((cout<<"Podaj polecenie: ")&&(getline(cin,cmd)))
  {
   if(cmd=="run")
     {
      //...
     }
    //...
   else if(cmd=="exit") return 0;
   //while(cin.get()!='\n') {}
  }

dodanie znacznika <code class="cpp"> - @furious programming


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: furious programming, 2014-11-07 12:45

Pozostało 580 znaków

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