>我有一些代码在逐行遍历文本文件时循环,以标记数据并将其插入向量。
我正在使用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';