c++ - 在 while 循环中使用 eof() 时出现问题 [C++]
问题描述
我对以下代码有疑问。
#include<iostream>
template <class A> void reading(A &a) {
bool x = true;
while(x) {
x = false;
std::cin >> a;
while (std::cin.fail()) {
if (std::cin.eof()) {
std::cout <<"You pressed CTRL+D\n";
std::cin.clear();
std::cin.ignore (1000000000, '\n');
}
else {
std::cout <<"Give me numbers, not letters\n";
std::cin.clear();
std::cin.ignore(1000000000,'\n');
}
x = true;
}
}
}
int main() {
double o[3];
for (double &i:o)
reading (i);
for (int j = 0; j<3; j++)
std::cout<<o[j]<<std::endl;
}
特别是,当我按 ctrl+d 时,程序进入无限循环。有人知道问题出在哪里以及解决方案是什么吗?
我的目标是制作一个可以读取任何类型数据并在输入期间禁用 ctrl+d 的模板函数。
解决方案
推荐阅读
- python - .env 文件或配置类
- bash - 将自定义 linux 子系统从一台机器导入另一台机器后,我无法让 ubuntu 将非 root 用户设置为默认用户
- html - Bootstrap justify-content-around 不传播项目
- javascript - 根据关键字数组过滤对象属性
- r - 比较两个数据集中的列
- python - Python Curve_fit.optimize put 函数模型与变量之间的条件
- c# - 使用 NLog 创建用于日志记录的自定义扩展函数
- flutter - 如何在颤动中将视频从模拟器内部存储加载到视频播放器
- python - 如何从单独列中的字符串中提取特定代码?
- awk - awk 从列 $3 创建多个包含模式和名称的文件