具有cin的C ++读取返回字符

时间:2020-03-06 14:53:50  来源:igfitidea点击:

我想知道如何使用" cin",以便如果用户不输入任何值而仅按" ENTER",则cin会将其识别为有效输入。

解决方案

cin.getline是否可以解决问题?

我发现对于用户输入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,即使面对乱码也是如此。

我们可能需要尝试std :: getline

#include <iostream>
#include <string>

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

尝试取消缓冲cin(默认情况下已缓冲)。