C++ wacht op gebruikersinvoer

Wat is de beste manier om te wachten op gebruikersinvoer in de consoletoepassing?

std::cout << "press any key to exit...";
// wait for user to hit enter or another key

Antwoord 1, autoriteit 100%

Verschillende manieren om dit te doen, hier zijn enkele mogelijke benaderingen in één regel:

  1. Gebruik getch()(je hebt #include <conio.h>nodig).

  2. Gebruik getchar()(verwacht voor Enter, #include <iostream>nodig).

  3. Gebruik cin.get()(verwacht voor Enter, #include <iostream>nodig).

  4. Gebruik system("pause")(#include <iostream>nodig).

    PS: Deze methode drukt ook Press any key to continue . . .op het scherm. (lijkt de perfecte keuze voor jou :))


Bewerken:Zoals hierbesproken, is hier geen volledig draagbare oplossing voor. Vraag 19.1 van de comp.lang.c FAQbehandelt dit tot op zekere hoogte, met oplossingen voor Windows, Unix-achtige systemen, en zelfs MS-DOS en VMS.


Antwoord 2, autoriteit 7%

een do while-lus zou een goede manier zijn om te wachten op de invoer van de gebruiker.
Zoals dit:

int main() 
{
 do 
 {
   cout << '\n' << "Press a key to continue...";
 } while (cin.get() != '\n');
 return 0;
}

Je kunt ook de functie system('PAUSE')gebruiken, maar ik denk dat dit iets langzamer en platformafhankelijk is


Antwoord 3, autoriteit 3%

Er is geen “standaard” bibliotheekfunctie om dit te doen. De standaard (misschien verrassend) herkent het concept van een “toetsenbord” niet echt, hoewel het wel een standaard heeft voor “console-invoer”.

Er zijn verschillende manieren om dit op verschillende besturingssystemen te bereiken (zie de oplossing van herohuyongtao), maar het is niet overdraagbaar op alle platforms die toetsenbordinvoer ondersteunen.

Onthoud dat C++ (en C) zijn ontworpen als talen die kunnen worden uitgevoerd op embedded systemen die geen toetsenbord hebben. (Dat gezegd hebbende, een ingebed systeem heeft mogelijk geen verschillende andere apparaten die de standaardbibliotheek ondersteunt).

Over deze kwestie wordt al lang gedebatteerd.


Antwoord 4, autoriteit 3%

Je kunt het proberen

#include <iostream>
#include <conio.h>
int main() {
    //some codes
    getch();
    return 0;
}

Other episodes