Forum: Avbryta en while(cin>>input)

Forum huvudsida -> Programmering -> Avbryta en while(cin>>input)

Sidor: 1

Till botten

skalman93 16:31 - 2:a Oktober 2009 | Post #1
Medlem
Inlägg: 8


Skicka PM
Hallå! Hur bryter kommer man ur en while(cin>>input)?
Här kommer en bit kod för att visa.
  1. while(cin>>input)
  2. {
  3. deque1.push_back(input);
  4. }


Jag hade för mig att det skulle gå med Ctrl+D men då avslutades hela programmet. Tacksam för svar!
//Skalman




Kekke 17:56 - 2:a Oktober 2009 | Post #2
Medlem
Inlägg: 4


Skicka PM
Vad är input?
Testa detta:


while(getline(cin, input) && !input.empty())
{
     cout << input;
}


-------------------------
Ingen signatur!



skalman93 11:32 - 3:e Oktober 2009 | Post #3
Medlem
Inlägg: 8


Skicka PM
Det funkar inte. Det jag vill göra är att fylla på deque1-dequen med strängar tills att användaren säger stopp. input är en sträng.




martin310 15:48 - 3:e Oktober 2009 | Post #4
Medlem
Inlägg: 132


Skicka PM
Testa i while loopen:

  1. if(kbhit())
  2. break;


Denna kod väntar på att användaren trycker på en knapp och då avslutar den loopen.

Eller:

  1. if(kbhit() && cin.get() == "knapp")
  2. break;


Denna kod väntar på att användaren trycker på en knapp som motsvarar där det står knapp. Och då avslutar den loopen.

-------------------------

Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad!



Senast redigerad 15:51 - 3:e Oktober 2009


Kekke 19:23 - 3:e Oktober 2009 | Post #5
Medlem
Inlägg: 4


Skicka PM
    Citat av skalman93:
Det funkar inte. Det jag vill göra är att fylla på deque1-dequen med strängar tills att användaren säger stopp. input är en sträng.


Ja, men gör du som jag sa så avslutar den loopen när man bara trycker ENTER utan att skriva något.

    Citat av martin310:
Testa i while loopen:

  1. if(kbhit())
  2. break;


Denna kod väntar på att användaren trycker på en knapp och då avslutar den loopen.

Eller:

  1. if(kbhit() && cin.get() == "knapp")
  2. break;


Denna kod väntar på att användaren trycker på en knapp som motsvarar där det står knapp. Och då avslutar den loopen.


I ditt första exempel så kommer den ju att (om jag läser rätt) avbryta vad han än gör? Han kan alltså inte skriva in strängar eller något?

-------------------------
Ingen signatur!

Senast redigerad 19:25 - 3:e Oktober 2009


kode 19:50 - 3:e Oktober 2009 | Post #6
Medlem
Inlägg: 45


Skicka PM
och ^D fungerar inte? Rent teoretiskt borde väl en while(cin>>input) läsa till <EOF> eller?




Vitdom 20:14 - 3:e Oktober 2009 | Post #7
Medlem
Inlägg: 71


Skicka PM
    Citat av kode:
och ^D fungerar inte? Rent teoretiskt borde väl en while(cin>>input) läsa till <EOF> eller?

std::cin har egenskapen att den läser inmatning tills att den stöter på ett nyradstecken, mellanslag eller tab. Man skickar inmatningen till std::cins buffert om man skriver in ett nyradstecken.

Hur koden ska se ut beror på när du vill att loopen ska avslutas. Vill du t.ex. att den ska läsa tills att std::cin stöter på EOF(Ctrl+Z) så är detta en fullt duglig kod:
  1. while(cin >> input)
  2. {
  3. deque1.push_back(input);
  4. }


-------------------------



Senast redigerad 20:22 - 3:e Oktober 2009


skalman93 22:08 - 8:e Oktober 2009 | Post #8
Medlem
Inlägg: 8


Skicka PM
Jo alltså när jag trycker Ctrl+D som borde funka tycker jag så avslutas programmet utan vidare. Samma gäller Ctrl+Z, men å andra sidan så är det inte så konstigt då jag använder linux.
Det jag vill göra är att mata in ett obestämt antal variablar.




kode 01:06 - 9:e Oktober 2009 | Post #9
Medlem
Inlägg: 45


Skicka PM
Ctrl-Z skickar programmet till bakgrunden, det avslutar det inte. Det är multitaskande, det där *nix




skalman93 09:38 - 9:e Oktober 2009 | Post #10
Medlem
Inlägg: 8


Skicka PM
Men varför står det då "Process ended" ?




martin310 16:58 - 11:a Oktober 2009 | Post #11
Medlem
Inlägg: 132


Skicka PM
Jag har för mig att man ska kunna lägga till kort-kommandon till dos.

-------------------------

Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad!





kode 19:09 - 14:e Oktober 2009 | Post #12
Medlem
Inlägg: 45


Skicka PM
    Citat av skalman93:
Men varför står det då "Process ended" ?


"Stopped" eller nåt i den stilen kan det stå, ja, men det ligger kvar i bakgrunden. sedan kan man låta det köra vidare i bakgrunden genom att skriva bg, eller för all del få fram det igen med fg




Sidor: 1

Forum huvudsida -> Programmering -> Avbryta en while(cin>>input)
Atom feed

Du får inte posta i den här tråden | Till toppen