如何解决在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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。