c++ - 在二进制文件中读取/写入控制字符
问题描述
我目前正在使用 C++ 处理二进制文件...
在某些时候,我读取了一个字节,读取的 char * 是“\x3”,这似乎是一个控制字符。
但是当我必须使用以下方法将其写回时:
const char *control = "\x3";
fout.write(control, sizeof(control));
然后我读回二进制文件,读取值为“\x11C”。
如何以正确的方式将控制字符数组写回文件?
解决方案
您的代码正在将 4-8 个字符写入二进制文件,而不是您期望的 1 个字符。control
被视为普通指针,并且sizeof(control)
正在解释所述指针而不考虑它指向的数据,并且返回值 4-8。
解决此问题的最佳方法是声明control
为单个字符,这似乎是您的意图:
char control = '\x3';
fout.write(&control, sizeof(control));
另一种方式,如果你真的需要写多个字符,是这样的:
const std::string control = "\x3";
fout.write(control.data(), control.size());
任何一种方法都将正确输出您期望的字符数。
推荐阅读
- lean - 定理中命题的大括号和圆括号之间的区别
- javascript - 如何显示群组消息
- laravel - 当用户使用电报机器人加入电报组时如何处理 new_chat_members?
- html - 有没有办法让引导一列高度等于垂直两列?
- javascript - 如何使用减少 JavaScript 增加同一周的计数?
- php - 无法在我的工作的 HTML/CSS 模板中添加背景
- twig - 如何检查 li 是否有 class Active?
- python-3.x - 来自 python:3.x-alpine3.x 的 Alpine Docker 映像使用的 Python 包版本与所述不同
- javascript - 使用 findOne() 后如何从 mongoose/mongodb 文档中获取值
- cassandra - 在微秒内插入值时遇到问题