首页 > 后端开发 > C++ > 正文

为什么我的 C 输入循环跳过 getline() 调用?

Linda Hamilton
发布: 2024-11-15 13:24:02
原创
143 人浏览过

Why is My C   Input Loop Skipping getline() Calls?

C 输入循环中 getline() 的意外行为

在尝试从控制台获取用户输入时,开发人员遇到了令人费解的问题getline() 函数的问题。与预期相反,程序在第一次调用 getline() 后未能等待输入,立即继续进行后续调用。

提供的代码片段说明了有问题的部分:

getline(cin, inputString);
getline(cin, inputString);
登录后复制

此行为是由于同一输入循环中 getline() 和输入运算符 (>>) 的组合引起的。而>>跳过前导空格,它无法消耗尾随换行符。当调用 getline() 时,换行符保留在输入缓冲区中,并被解释为下一个输入的一部分。

解决方案:

解决此问题,必须始终使用 getline() 或 >>整个输入循环。如果所有输入都是数字或者可以有效地解析,>>>是一个合适的选择。但是,如果涉及字符串或混合数据类型,则应使用 getline() 并手动从输入字符串中提取数值。

代码重构:

对所有输入使用 getline():

getline(cin, inputString);
getline(cin, inputString);
getline(cin, inputUInt);
getline(cin, inputUInt);
getline(cin, inputDouble);
登录后复制

或者,使用 >>对于所有数字输入:

cin >> inputString;
cin >> inputString;
cin >> inputUInt;
cin >> inputUInt;
cin >> inputDouble;
登录后复制

以上是为什么我的 C 输入循环跳过 getline() 调用?的详细内容。更多信息请关注PHP中文网其他相关文章!

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