假设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
允许重试。
通常最好使用自己的缓冲区。 Putback 是一种技巧。
关于c++ unget on fstreams是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22743695/