文件末尾输入无效

时间:2016-04-22 08:37:46

标签: c++

我是绝对初学者,正在通过Stroustrup'编程原则和实践'书。

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

我相信Ctrl-D应该退出range-for循环然后cout计算,但这不起作用。我只能通过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;
}

2 个答案:

答案 0 :(得分:0)

在类Unix系统上(至少在默认情况下),通过在行的开头键入Ctrl-D或通过键入Ctrl-D两次触发(如果您不在开头)来触发文件结束条件一条线。从这个问题的接受答案: Why do I need to type Ctrl-D twice to mark end-of-file?

答案 1 :(得分:0)

你似乎没有离开for循环。要么你可以定义你正在进行的值的限制,所以它会多次循环,或者你说while(input!= X),这样当你给出一个X值它就会离开循环。并检查是否应该使用3个陈述而不是2.祝你好运