#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 >> account
时,它可以正常工作。我有输入有空格所以我只需要使用getline()
但我无法理解这种奇怪的行为。
答案 0 :(得分:3)
您的cin >> N
在缓冲区中留下了一个换行符号(您键入的内容),当您第一次调用getline()
时,该符号会立即消失。
您可以在第一个cin.ignore();
之前执行getline
来忽略此字符。