c++ - ifstream operator>> 和 get() 方法有什么区别?
问题描述
最近,我>>
在读取二进制文件时使用了运算符,但在某些情况下它会跳过一个字节。在我的代码中找到错误的位置给我带来了很多问题,但最后我设法用该get()
方法解决了这个问题,但我仍然不知道为什么>>
不时跳过字节。
m_Value
目标是将文件中的第一个字节加载到uint8_t
.
代码>>
:
bool CByte :: load ( ifstream & fin)
{
if(! ( fin >> m_Value ) ) return false;
return true;
}
代码get()
:
bool CByte :: load ( ifstream & fin)
{
char c = 0;
if(! ( fin . get ( c ) ) ) return false;
m_Value = static_cast <uint8_t> (c);
return true;
}
解决方案
推荐阅读
- python - 统一 cvs 文件的多条记录 - Django
- amazon-web-services - 当它们都是在 ECS Fargate 中的同一任务中运行的容器时,如何从我的 UI 向我的 API 发出请求
- javascript - 如何正确地将 WASM 集成到 Angular 服务中
- javascript - 从另一个对象数组创建对象数组
- javascript - 创建 React 应用程序 - 调试 - 导入未定义的变量
- amazon-web-services - Elastic Beanstalk 服务角色未授予附加策略的权限
- flutter - 无法在颤动中获得多个音频文件的持续时间
- xcode - Xcode 12.3 未下载或更新 Big Sur - 多次 Mac 重启
- neural-network - 将图外计算的损失分配给 Pytorch 模型
- r - 在 Lenovo Chromebook 上运行的 Debian 10(buster)上升级 R 时遇到问题