C++ 读取返回字符

C++ having cin read a return character

提问人: 提问时间:9/30/2008 最后编辑:Mateen Ulhaq 更新时间:4/3/2015 访问量:16825

问:

我想知道如何使用,以便如果用户没有输入任何值而只是推送,则会将其识别为有效输入。cinENTERcin

C++ 输入 返回 IOSTREAM CIN

评论

0赞 Paul Linden 2/23/2012
Bjarne Stroustrup的“C++编程语言”当然认为cin会返回“\n”,但我无法让它工作。我将尝试 getline 路线。

答:

2赞 Thorsten79 9/30/2008 #1

做 cin.getline 解决您的问题?

5赞 CB Bailey 9/30/2008 #2

我发现用户输入效果很好。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”,则很容易不同步,并在打印他下次需要看到的提示之前阅读用户上次写的内容。

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

15赞 Martin Cote 9/30/2008 #3

您可能想尝试:std::getline

#include <iostream>
#include <string>

std::string line;
std::getline( std::cin, line );
if( line.empty() ) ...
0赞 Kasprzol 9/30/2008 #4

尝试取消缓冲 cin(默认缓冲)。

2赞 BigAlMoho 3/13/2015 #5

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