40

这不起作用:

string temp;
cout << "Press Enter to Continue";
cin >> temp;
4

7 回答 7

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

或更好:

#include <limits>
cout << "Press Enter to Continue";
cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
于 2009-05-24T06:36:06.873 回答
9

尝试:

char temp;
cin.get(temp);

或者,更好的是:

char temp = 'x';
while (temp != '\n')
    cin.get(temp);

我认为字符串输入会等到您输入真实字符,而不仅仅是换行符。

于 2009-05-24T06:36:01.647 回答
8

将您的替换cin >> temp为:

temp = cin.get();

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

cin >>将等待 EndOfFile。默认情况下, cin 将设置skipws标志,这意味着它在提取并放入字符串之前会“跳过”任何空格。

于 2009-05-24T06:38:38.740 回答
2

尝试:

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

成功时,返回读取的字符(提升为int值,int getchar ( void );),可用于测试块(while等)。

于 2015-05-19T23:02:45.230 回答
2

你需要包含 conio.h 所以试试这个,很简单。

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

int main() {

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

  return 0;
}

有了它,您就不需要字符串或 int 了getch();

于 2017-01-15T11:01:11.790 回答
1

函数std::getline(已经在 C++98 中引入)提供了一种可移植的方式来实现它:

#include <iostream>
#include <string>

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

在我观察到没有返回空输入后,我发现了这个问题答案。std::cin >> temp;所以我想知道如何处理可选的用户输入(这对于字符串变量当然可以为空是有意义的)。

于 2017-12-13T13:43:58.747 回答
0

还有另一种解决方案,但适用于 C。需要 Linux。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    printf("Press any key to continue...");
    system("/bin/stty raw"); //No Enter
    getchar();
    system("/bin/stty cooked"); //Yes Enter
    return 0;
}
于 2020-01-31T23:06:54.487 回答