c++ unget on fstreams是否安全

标签 c++ iostream fstream

假设input.txt是一个1字节的文本文件:

std::ifstream fin("input.txt", std::ios::in);
fin.get();              // 1st byte extracted
fin.get();              // try to extract 2nd byte
std::cout << fin.eof(); // eof is triggered
fin.unget();            // return back
std::cout << fin.eof(); // eof is now reset
fin.get();              // try to extract 2nd byte, eof assumed
std::cout << fin.eof(); // no eof is triggered

似乎 unget() 打破了 eof 标志触发,它也打破了文件指针。我做错了什么吗?

最佳答案

eof 未设置,但也不好。流忽略操作,因为它处于故障模式。

我不记得 unget 在 EOF 之后应该做什么,但是如果我使用 clear 允许重试。

http://ideone.com/JkDrwG

通常最好使用自己的缓冲区。 Putback 是一种技巧。

关于c++ unget on fstreams是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22743695/

相关文章:

c++ - fstream:检查错误的最正确方法

c - 扫描文件时C中的无限循环

c++ - 一个对象可以释放它的内存吗?

c++ - 在 C++ 中转储局部变量

c++ - WinApi任务查杀

c++ - iostream 链接器错误

c++ - 如何从控制台读取空格分隔的数字?

c++ - 在 C++ 中删除 ofstream 中的一行

c++ - 期待 eof 但 eof 附近的任意数据

c++ 在 free() 上崩溃