Just nu i M3-nätverket
Gå till innehåll

Jag vill kunna avbryta en whilesats mitt i en exekviering


vlise

Rekommendera Poster

Hej

Har en liten fundering om huruvida det går att avbryta en while loop genom att den för varje varv kollar om ett fall sant eller ej.

 

Detta vill jag göra. Jag vill att while loppen skall hålla på tills att jag trycker på en speciell tangent, ex s. Men jag vill försöka undvika att använda cin i loopen, eftersom då väntar loopen på ett svar från användaren efter varje loop. opch detta vill jag ju inte. Finns den möjligheten?

 

while(i < value)

{

do something

 

if(om jag tryckt på en viss tangent skall loopen avbrytas)

break;

i++;

}

 

Jag vill alltså kunna avbryta satsen innan i = value. Det kanske inte går i en console app?

 

Länk till kommentar
Dela på andra webbplatser

Minns inte riktigt hur cin fungerar, men jag har för mig att en operation av typen (cin >> variabel) returnerar true/false beroende på om det överfördes något från buffern. Isåfall kan du testa med nedanstående:

 

bool isInterrupted=false;
while(i < value && !isInterrupted)
{
// do something
 string dummy;
 isInterrupted = (cin >> dummy);
 i++;
}

 

Länk till kommentar
Dela på andra webbplatser

Tack för hjälpen men det funkade inget bra =(. Loopen stannar forfarande och väntar på att få något från användaren.

 

Länk till kommentar
Dela på andra webbplatser

Skulle det vara en någon peak att du skrev dummy som variabel namn?=)

Aja jag löste iaf hur man skulle göra.

 

while(statement)
{
´ //do something
  if(_kbhit())
   {
        if(tolower(_getch()) == 's') 
            break;
    }
}

 

Länk till kommentar
Dela på andra webbplatser

Skulle det vara en någon peak att du skrev dummy som variabel namn

Hehe, nädå, jag brukar använda det namnet ibland för en variabel som inte tjänar något egentligt syfte i koden.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...