c++ - 允许用户跳过输入并直接按 Enter 键

标签 c++ input cin

有什么方法可以让用户只按 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/

相关文章:

c++ - 在 parallel_for 中使用函数对象

c++ - 内存泄漏而不分配任何内存?

c++ - Qt 5.2.0 ftp 和 QNetworkAccessManager

java - 如何在java中旋转一定数量的单词

c++ - 如何只接受 'cin' 中的数字(C++ 编程)?

c++ - 为什么 stringstream >> 在失败时更改目标值?

c++ - 了解 openCV 2.4 中的感兴趣区域

java - SWT:输入验证:防止输入下标和上标数字

java - 如何从一个文件输入文本并输出到另一个文件

c++ - 带菜单的输入验证 C++