2

我有一些代码在逐行遍历文本文件以标记数据并将其插入向量时循环。

我正在使用 peek() 来测试文件是否在末尾,如果是则中断循环:

if (fin.peek() == -1)
    break;

这很好用,但我对包含“幻数”-1 有点恼火。是否有一个 C++ 库,我可以包含与 stdio.h 相同的函数,将 -1 预定义为 EOF ,或者我应该只定义一个 const int eof = -1?

4

3 回答 3

3

“神奇值”-1 定义为Traits::eof,其中 Traits 是fin变量traits_type类型的 typedef 。

换句话说,decltype(fin)::traits_type::eof

于 2013-10-16T12:06:57.650 回答
1

您想使用std::ios::eof(),例如:

if (fin.eof())

    break;
于 2013-10-16T12:07:23.843 回答
1

一般来说,循环控制应该做所需的输入;如果输入操作失败,则循环终止:

std::string word;
while (std::cin >> word)
    std::cout << word << '\n';
于 2013-10-16T13:01:48.403 回答