2009-05-24 8 views

Antwort

69
cout << "Press Enter to Continue"; 
cin.ignore(); 

oder besser:

#include <limits> 
cout << "Press Enter to Continue"; 
cin.ignore(std::numeric_limits<streamsize>::max(),'\n'); 
+0

Das ist in der Tat ein plattformübergreifender Weg, man kann << flush hinter den cout und cin.sync() zwischen diesen Zeilen setzen, um sicherzustellen, dass es in jedem Fall funktioniert. ;-) –

+4

cin ist an cout gebunden, also bevor irgend ein i/o von cin passiert, ist der output von cout schon geleert –

+9

Warum ist der zweite Code "besser"? – dani

8

Versuchen:

char temp; 
cin.get(temp); 

oder noch besser:

Ich denke, die String-Eingang, bis Sie warten Geben Sie echte Zeichen ein, nicht nur einen Zeilenumbruch.

7

Ersetzen Sie Ihre cin >> temp mit:

temp = cin.get(); 

http://www.cplusplus.com/reference/iostream/istream/get/

cin >> wird für die EndOfFile warten. Standardmäßig wird cin das Flag skipws gesetzt haben, was bedeutet, dass es alle Leerzeichen überspringt, bevor es extrahiert und in Ihre Zeichenfolge eingefügt wird.

2

Versuchen:

cout << "Press Enter to Continue"; 
getchar(); 

Bei Erfolg wird das gelesene Zeichen zurück (gefördert zu einem int Wert, int getchar (void);), die in einem Testblock verwendet werden können (while, etc).

2

Sie müssen conio.h einschließen, also versuchen Sie es, es ist einfach.

#include <iostream> 
#include <conio.h> 

int main() { 

    //some code like 
    cout << "Press Enter to Continue"; 
    getch(); 

    return 0; 
} 

Damit brauchen Sie nicht einen String oder ein int für diese nur getch();

+1

Diese Antwort funktioniert nicht mehr, die Funktion getch() war veraltet. –

0

Die Funktion std::getline (bereits eingeführt mit C++ 98) bietet eine portable Möglichkeit, dies umzusetzen:

#include <iostream> 
#include <string> 

void press_any_key() 
{ 
    std::cout << "Press Enter to Continue"; 
    std::string temp; 
    std::getline(std::cin, temp); 
} 

Ich fand dies dank dieser question und answer nachdem ich festgestellt habe, dass std::cin >> temp; nicht mit leerer Eingabe zurückkehrt. Also habe ich mich gefragt, wie man mit optionalen Benutzereingaben umgehen soll (was sinnvollerweise für eine Stringvariable natürlich leer sein kann).