首页 > 后端开发 > C++ > 为什么在 C 中读取整数后 `getline()` 会跳过输入?

为什么在 C 中读取整数后 `getline()` 会跳过输入?

DDD
发布: 2024-12-22 22:28:13
原创
361 人浏览过

Why Does `getline()` Skip Input After Reading an Integer in C  ?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板