文件结束输入不起作用

End Of File input not working

本文关键字:不起作用 输入 结束 文件      更新时间:2023-10-16

我是一个绝对的初学者,正在阅读Stroustrup的"编程原理和实践"一书。

在第 4 章中,它介绍了文件末尾输入;Ctrl-D 适用于以前的代码片段。我现在正在处理的代码是这个简单的矢量示例。

我相信 Ctrl-D 应该退出 range-for 循环,然后进行计算,但这不起作用。我只能退出程序,并且看不到任何结果,通过 Ctrl-Z(已停止)、Ctrl-C 或 |(管道)符号,其他任何东西都只是继续输入循环。

我在 Linux 上使用终端模拟器(终结器)来编写、运行和编译。我在 Code::Blocks 中尝试了相同的代码,输出完全相同。

拜托;我怎样才能打破输入循环?

#include "std_lib_facilities.h"      //provided PPP header file
int main()
{
    vector<double>temps;
    for (double temp; cin >> temp;)  //get stuck in here
        temps.push_back(temp);
    double sum=0;                    //want to get to here 
    for (double x : temps) sum += x;
    cout << "Average temperature: " << sum/temps.size() << endl;
    sort(temps.begin(),temps.end());
    cout << "Median temperature: " << temps[temps.size()/2] << endl;
}

在类 Unix 系统上(至少默认情况下),通过在行首键入 Ctrl-D 或键入 Ctrl-D 两次(如果不在行首)来触发文件结束条件。从这个问题的公认答案:为什么需要键入两次 Ctrl-D 来标记文件结尾?

你似乎没有脱离for循环。 要么你可以定义你正在获取的值的安普特,以便它循环多次,要么你说while(input!=X),这样当你给出一个X值时,它就会离开循环。并检查 for 应该与 3 个语句一起使用,而不是 2 个语句。祝你好运