有什么方法可以让用户只按 Enter 键而不输入任何内容并继续执行 std::cin
中的程序?谢谢!
_tprintf(_T("\nENTER CHOICE: "));
cin>>ch;
cin.ignore();
当我用这段代码运行程序时,很可能我根本不想在那个字段上输入任何东西,当我按下回车键时,光标只会产生新的行。
最佳答案
如果您“读入”std::noskipws
,那么读取将停止跳过空格。这意味着当您读入单个字符时,您可以读入空格和换行符等。
#include <iostream>
#include <iomanip>
int main() {
std::cin >> std::noskipws; //here's the magic
char input;
while(std::cin >> input) {
std::cout << ">" << input << '\n';
}
}
当输入运行时:
a
b
c
产生:
>a
>
>
>b
>
>
>c
所以我们可以看到它读入了字母a
,然后是换行符后的回车键,然后是空行,然后是字母b
,等等
如果您希望用户在输入数字后按下回车键,则必须在您的代码中进行处理。
如果用户只是每行输入一个“东西”,实际上有一种更简单的方法:
#include <iostream>
int main() {
std::string line;
while(std::getline(std::cin, line)) {
std::cout << line << '\n';
}
}
这将从输入中读取字符直到行尾,允许您读取带空格的行,或根本没有的行。请注意,在您使用 std::cin >>
之后,它通常会在输入中留下换行键,因此如果您在它返回后立即执行 std::getline
一个空字符串。为避免这种情况,您可以使用 std::cin.ignore(1, '\n')
使其在尝试使用 std::getline
之前忽略换行符.
关于c++ - 允许用户跳过输入并直接按 Enter 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17870888/