while - C++有cin读取返回字符




std::cout (4)

我想知道如何使用cin以便如果用户没有输入任何值,只需按下ENTER ,那么cin会将其识别为有效的输入。


尝试unbuffering cin(它是默认缓冲)。


我发现,对于用户输入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 - about”,则很容易失去同步并读取用户上次写入的内容,然后再打印提示,以便下次看到。

如果你用std::getline( std::cin, a_string )读完每一行,然后解析返回的字符串(例如使用istringstream或其他技术),保持打印提示与std: cin,甚至面对乱码的输入。


你可能会想尝试std::getline

#include <iostream>
#include <string>

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

要检测用户按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




cin