C++ 避免";“幻数”;对于eof C++;

C++ 避免";“幻数”;对于eof C++;,c++,eof,magic-numbers,C++,Eof,Magic Numbers,我有一些代码在逐行遍历文本文件时循环,以标记数据并将其插入向量 我使用peek()测试文件是否在末尾,如果是,则中断循环: if (fin.peek() == -1) break; 这很好,但我对包含“神奇数字”-1.有点恼火。。是否有一个C++库,我可以将函数与STDIO?h一样定义为1,作为EOF,或者我应该定义一个const int of=-1?< /p> < p>“魔法值”-1被定义为特征::EOF,其中的特性是 TrutsSyType < /代码>类型>您的鳍< /强>变量>

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

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

if (fin.peek() == -1)
    break;
这很好,但我对包含“神奇数字”-1.有点恼火。。是否有一个C++库,我可以将函数与STDIO?h一样定义为1,作为EOF,或者我应该定义一个const int of=-1?< /p> < p>“魔法值”-1被定义为<代码>特征::EOF,其中的特性是<代码> TrutsSyType < /代码>类型>您的<强>鳍< /强>变量>
换句话说,
decltype(fin)::traits\u type::eof

您想使用
std::ios::eof()
,类似于:

if (fin.eof())

    break;

一般来说,回路控制应完成所需的输入;如果输入操作失败,循环将终止:

std::string word;
while (std::cin >> word)
    std::cout << word << '\n';
std::字符串字;
while(std::cin>>word)

std::不可能重复您是否正在寻找
#include
?我不是问peek()的返回值,我知道如果它是文件结尾,它是-1。。我只是在问什么是避免使用魔法数字-1的最好方法。。如果C++中有一个标准的方法,那么在C中,它被预先定义为EOF。我不希望只为EOF包含一个c库,我可以自己将它定义为常量int