我想知道如何使用cin
,这样如果用户没有输入任何值,只需按ENTER
cin
即可将此识别为有效输入。
答案 0 :(得分:15)
您可能想尝试std::getline
:
#include <iostream>
#include <string>
std::string line;
std::getline( std::cin, line );
if( line.empty() ) ...
答案 1 :(得分:5)
我发现对于用户输入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的读取保持同步,甚至面对乱码输入。
答案 2 :(得分:2)
cin。getline能否解决您的问题?
答案 3 :(得分:2)
要检测用户按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
答案 4 :(得分:0)
尝试取消缓冲cin(默认情况下缓冲)。