c++ - getline 函数的奇怪循环行为

标签 c++ getline

<分区>

#include <iostream>
#include <string>
#include <set>
using namespace std;    
int main()
{
   int N; //number of bank accounts
   cin >> N;
   int n = 0;
   multiset<string> bank_accounts;
   string account;
   while (n < N)
   {
     getline(cin, account);
     bank_accounts.insert(account);
     n++;
   }        
}

当我输入 N = 1 时,循环不接受任何输入并且程序退出但是当我使用 而不是 getline(cin, account) >cin >> 帐户 有效。我的输入有空格,所以我只需要使用 getline() 但我无法理解这种奇怪的行为。

最佳答案

你的 cin >> N在缓冲区中留下一个换行符(您键入的),您在第一次调用 getline() 时立即使用它.

你可以通过 cin.ignore(); 忽略这个字符在你第一次 getline 之前.

关于c++ - getline 函数的奇怪循环行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256658/

相关文章:

C++,Lapack Cholesky 分解实现不准确的结果

c++ - 在 C++ 中检测击中 Enter 键

c++ - wxScrolledWindow 添加和删除元素

c++ - 使用getline从文件中读取多行?

c++ - 如何使用带有分隔字符串而不是空格的符号的输入字符串流?

c++ - 如何设置.vcxproj以让MSBuild编译dll

c++ - 在 system() 函数中获取输入 (Mac)

c - 为什么 getline() 会得到前一行?

c++ - 在 C++ 中从仅知道起始数字(但需要整行)的文本文件中检索特定行

C++:Getline 在第一个空格处停止读取