需要帮助处理getline()

需要帮助处理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”之前立即输出“输入帐户号”?谢谢!


慕容森
浏览 427回答 3
3回答

繁星淼淼

这个getline(cin, str);读取前面读取的数字之后的换行符,并立即返回此“行”。为了避免这种情况,可以跳过空格std::ws在阅读名字之前:cout&nbsp;<<&nbsp;"Enter&nbsp;number:";cin&nbsp;>>&nbsp;number;cout&nbsp;<<&nbsp;"Enter&nbsp;name:";ws(cin);getline(cin,&nbsp;str);...请注意,这也跳过换行符后的前导空格,因此str不会从空格开始,即使用户输入了它们。但在这种情况下,这可能是一个特征,而不是一个bug.

FFIVE

试一试cout&nbsp;<<&nbsp;"Enter&nbsp;name:";cin.ignore();getline(cin,&nbsp;str);
打开App,查看更多内容
随时随地看视频慕课网APP