避免对EOF C++"magic number"



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

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

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

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

"魔力值" -1 定义为 Traits::eof ,其中 Traits 是 fin 变量类型的traits_type类型定义。

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

你想使用 std::ios::eof() ,像这样:

if (fin.eof())
    break;

通常,循环控件应执行所需的输入;如果输入操作失败,循环将终止:

std::string word;
while (std::cin >> word)
    std::cout << word << 'n';

相关内容

  • 没有找到相关文章

最新更新