提问人:mcp 提问时间:8/29/2020 更新时间:8/29/2020 访问量:137
在 while 循环中使用 eof() 时出现问题 [C++]
Problem using eof() in a while loop [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 的模板函数。
答: 暂无答案
评论
std::basic_istream<CharT,Traits>::ignore
的文档。std::cin.ignore
std::numeric_limits<std::streamsize>::max()
double
operator>>
double