getline() 的输入问题
在 C 程序中,使用 getline() 读取用户输入时可能会遇到奇怪的行为。具体来说,如果您要求输入一个整数,请在其后输入 getline(cin, str),然后输入另一个整数,您会注意到在输入“str”之前会出现“输入帐号”。
发生这种情况是因为 getline() 还捕获在第一个整数之后输入的换行符。为了避免这种情况,您可以指示 cin 在读取“str”之前跳过空格。具体方法如下:
cout << "Enter number:"; cin >> number; cout << "Enter name:"; cin.ignore(numeric_limits<streamsize>::max(), '\n'); getline(cin, str);
此处,cin.ignore() 在 getline() 读取用户输入之前跳过任何空格,包括换行符。
或者,您可以使用 cin.get () 显式读取并丢弃换行符:
cout << "Enter number:"; cin >> number; cout << "Enter name:"; cin.get(); getline(cin, str);
这种方法确保换行符被消耗,并且 getline() 不会尝试读取它。
以上是为什么在 C 中读取整数后 `getline()` 会跳过输入?的详细内容。更多信息请关注PHP中文网其他相关文章!