Mar*_*ote 15
您可能想尝试std::getline:
#include <iostream>
#include <string>
std::string line;
std::getline( std::cin, line );
if( line.empty() ) ...
Run Code Online (Sandbox Code Playgroud)
我发现对于用户输入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?
Run Code Online (Sandbox Code Playgroud)
这是因为如果用户输入其他垃圾,例如"4.5 - about",则很容易失去同步并且在打印下次需要查看的提示之前读取用户最后一次写入的内容.
如果您阅读每个完整的行,std::getline( std::cin, a_string )然后解析返回的字符串(例如使用istringstream或其他技术),即使面对乱码输入,也更容易使打印的提示与std :: cin的读取同步.