终止一段时间(cin>> s)循环。加速C ++

时间:2015-09-06 08:40:01

标签: while-loop cin terminate accelerated-c++

我几乎肯定这个问题已被问到,但经过长时间的搜索,我仍然找不到答案。我从Accelerated C ++中提取了这段代码,但我遇到了终止while循环的问题。代码在这里:

#include <iostream>
#include <vector>

using namespace std;

istream& read(istream& in, vector<double>& vec)
{
    cout << "start reading" << endl;
    if (in) {
        vec.clear();
        double x;
        while (in >> x) {
            cout << "x=" << x << endl;
            vec.push_back(x);
        }
        in.clear();
    }
    cout << "end reading" << endl;
    return in;
}

int main() {
    vector<double> vec;
    read(cin, vec);
    return 0;
}

我输入1 2 3 4 5类型EOF(MacOS上的Ctrl-D)程序没有终止。我可以继续在向量中键入值:

start reading
1 2 3 4 5 x=1
x=2
x=3
x=4
x=5


5
x=5
6
x=6
7
x=7

我在这里找到最接近的问题: http://www.cplusplus.com/forum/beginner/49993/

1 个答案:

答案 0 :(得分:1)

好的问题是在mac中我应该执行以下操作:按ctrl-D发出信号并结束stdin,然后按回车键返回缓冲区。 更多:https://discussions.apple.com/thread/2361809