C ++是否可以安全地取消流
c++ is it safe to unget on fstreams
假设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
未设置,但 good
也没有设置。流忽略操作,因为它处于故障模式。
我不记得unget
在 EOF 之后应该做什么,但如果我使用 clear
允许重试,unget
会立即回到失败状态。
http://ideone.com/JkDrwG
通常最好使用自己的缓冲区。回击是一种黑客。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 挂起和取消挂起一个文件DLL
- 虚拟决赛作为安全
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何取消对nullptr的屏蔽,返回正确的对象
- 如何将元素添加到数组的线程安全函数?
- C++取消引用指针.为什么会发生变化
- C++中的线程安全删除
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 在 C++ 中更改越界指针的取消引用是否安全?
- 检查指针是否为null,然后在同一if语句中取消引用它,这样安全吗
- 取消引用指向不同线程中的原子对象的只读非原子指针是否安全
- 对 std::atomic::load 的结果使用结构取消引用 (->) 运算符是否安全
- C++中的安全指针取消引用
- asio:取消后重新启动async_read_some/async_write_some是否安全
- 通过make_unique取消引用下转换的派生对象是否安全
- 释放内存映射文件后取消映射视图是否安全
- 通过写入外部变量来取消 c++ 线程是否安全/有效
- 将无符号字符*转换为字符*是否安全,并将取消引用的指针视为真正指向字符