将EOF重新定义为字符串

时间:2012-07-10 12:27:43

标签: c++ eof istream-iterator

我正在尝试编写一个程序来获取一系列单词,将它们放入一个向量中然后用它们做事。我找到了一种有效的方法,即:

{
    vector<string> inputs;
    string Input;
    cin >> Input;
    while (Input != "Quit") 
    {
        inputs.push_back(Input);
        cin >> Input;
    }
}

但是我正在尝试使用其他方法来执行此操作,即:

{
    istream_iterator<string> ii(cin);
    istream_iterator<string> eos;
    vector<string> inputs(ii, eos);
}

但我不知道如何使Quit表示EOF,它会结束输入流并将单词放入向量中。如何使字符串"Quit"充当流终止符?

1 个答案:

答案 0 :(得分:1)

EOF-1中定义为cstdio。您可以尝试#undef EOF#define EOF "Quit",但这可能会破坏依赖EOF为有符号整数和/或-1的实现。所以基本上,不要管它。