c++ - 需要有关 getline() 的帮助

标签 c++ getline

<分区>

如果在我的程序中我要求用户输入,我这样做是有原因的:

int number;
string str;
int accountNumber;

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
getline(cin, str);
cout << "Enter account number:";
cin >> accountNumber;

为什么在输入第一个数字后,在我为 getline(cin, str) 行输入“​​str”之前,它会输出“Enter Name”,紧接着是“Enter Account Number”?谢谢!

最佳答案

getline(cin, str); 读取先前读取的数字之后的换行符,并立即返回此“行”。为避免这种情况,您可以在读取名称之前使用 std::ws 跳过空格:

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
ws(cin);
getline(cin, str);
...

请注意,这也会跳过换行符后的前导空格,因此 str 不会以空格开头,即使用户确实输入了空格。但在这种情况下,这可能是一个功能,而不是错误...

关于c++ - 需要有关 getline() 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596171/

相关文章:

c++ - 单个 cpp 文件的 Visual Studio 编译选项显示为灰色

c++ - 从文件读取时无法使用 getline

c++ - 在 C++ 中不使用 getline() 读取文本文件

c++ - 什么时候应该使用编译器附带的 STL 以外的 STL?

安卓NDK : libc++ support for hard-float

c++ - C++ 中没有 `while (!my_ifstream.eof()) { getline(my_ifstream, line) }`?

C++从重定向到我的程序的文件中读取特定数据段

c++ - getline 的替代品

c++ - 从微软的 STL 切换到 STLport

c++ - 使用 Boost.Preprocessor 生成一组带标签和索引的类模板特化