首页 > 后端开发 > C++ > 为什么 `getline` 不提示输入 C 语言?

为什么 `getline` 不提示输入 C 语言?

Barbara Streisand
发布: 2024-11-29 14:14:14
原创
466 人浏览过

Why Doesn't `getline` Prompt for Input in C  ?

getline 不提示输入:缓冲区问题的一个案例

在 C 中使用 getline(cin, mystr) 时,您可能会遇到问题是它不提示用户输入,而是将初始值“0”分配给价格变量。这是因为 getline 读取输入直到遇到换行符 ('n'),并且输入缓冲区中可能存在挥之不去的换行符。

混合输入流运算符(如 >>)时会出现问题。与 getline.当您使用 cin >> i 读取一个整数,用户输入后跟一个换行符。但是,该换行符仍保留在输入缓冲区中。当您随后调用 getline 时,它​​会将换行符解释为输入,而不提示用户。

可能的解决方案:

  • 忽略换行符: 在调用 getline 之前,使用 cin.ignore() 从输入缓冲区中删除换行符。例如:
cin.ignore();
getline(cin, mystr);
登录后复制
  • 使用自定义输入函数:编写一个函数,以字符串形式读取输入并将其转换为所需的数据类型,处理换行符适当地。例如:
int getInt() {
  string input;
  getline(cin, input);
  return stoi(input);
}
登录后复制
  • 避免>>对于输入: 专门使用 getline 进行输入,并将字符串转换为所需的数据类型。这种方法提高了代码的安全性和鲁棒性。

推荐实践:

最佳实践是对所有输入使用 getline,确保换行符得到正确处理,并且始终提示输入。避免混合>>使用 getline 来防止这些缓冲区问题。

以上是为什么 `getline` 不提示输入 C 语言?的详细内容。更多信息请关注PHP中文网其他相关文章!

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