我想知道如何使用 cin ,这样如果用户没有输入任何值,只需按 ENTER cin 将识别这是有效的输入。

有帮助吗?

解决方案

您可能想尝试 std :: getline

#include <iostream>
#include <string>

std::string line;
std::getline( std::cin, line );
if( line.empty() ) ...

其他提示

我发现对于用户输入 std :: getline 效果非常好。

您可以使用它来读取一行,然后丢弃它所读取的内容。

做这样的事情的问题,

// Read a number:
std::cout << "Enter a number:";
std::cin >> my_double;

std::count << "Hit enter to continue:";
std::cin >> throwaway_char;
// Hmmmm, does this work?

是如果用户输入其他垃圾,例如“4.5 - 约”在打印下次需要查看的提示之前,很容易失去同步并读取用户最后一次写的内容。

如果你用 std :: getline(std :: cin,a_string)读取每一个完整的行,然后解析返回的字符串(例如使用istringstream或其他技术),它就更容易保持打印的提示与std :: cin的读取同步,即使面对乱码输入。

cin。 getline 能解决您的问题吗?

要检测用户按Enter键而不是输入整数:

char c;
int num;

cin.get(c);               // get a single character
if (c == 10) return 0;    // 10 = ascii linefeed (Enter Key) so exit
else cin.putback(c);      // else put the character back
cin >> num;               // get user input as expected

可替换地:

char c;
int num;
c = cin.peek();           // read next character without extracting it
if (c == '\n') return 0;  // linefeed (Enter Key) so exit
cin >> num;               // get user input as expected

尝试不缓冲(默认情况下缓冲)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top