C++ IO 二进制文件流:未指定输出时的默认值
C++ IO binary file streams: default value when output isn't specified
我的问题是关于二进制文件I/O。假设运行以下代码:
#include <iostream>
#inclide <fstream>
int main(){
fstream out;
out.open("binfile.bin",ios::binary|ios::out);
if(!out.good()){
cout<<"ain't good"<<endl;
return EXIT_FAILURE;
}
out.seekp(3);
out<<char(74);
out.seekp(7);
out<<char(73);
out.close();
}
binfile.bin包含00 00 00 4A 00 00 00 49
。如果我没有指定输出内容,我能以某种方式更改文件中的默认值吗?我想用30
之类的东西替换00
,这样binfile.bin就会包含30 30 30 4A 30 30 30 49
,这可行吗?当然,我可以在文件末尾循环,并将所有00
s替换为30
s,但我希望避免这种情况。
您可以为seekp
编写一个包装并使用它。伪码:
my_seekp(fstream& f, int pos)
{
seek to end
endpos = position at end
if (pos > endpos)
{
int n = endpos - pos;
for (int i = 0; i < n; ++i)
f.put(char(30));
}
else
seek to pos
}
而不是使用<lt;,如果分配一个char-buf[4]数组,为所有元素设置所需的"fill"值,然后用所需的值更新第一个/最后一个元素,并调用.write(buf,4),会怎么样?
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 具有默认值的引用获取函数
- 当给定默认值时,为什么此模板参数推导失败
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 格式化浮点值:返回默认值
- 如何将数组部分初始化为某个默认值?
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- 创建一个包含 c++ 默认值的环境文件
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- Switch 语句(字符串)一直选择默认值,除非其为零
- 如何使用默认值将枚举声明为 extern
- 如何在提升程序选项中设置矢量<矢量>的默认值<string>
- 跳过输入并输出 garabge 值
- 如何使用默认值为构造函数中的枚举赋值?
- 变量始终在函数中重置为默认值
- 如何在C++中提供模板化函数作为另一个函数的参数,默认值?
- 切换始终在猜测一个数字游戏上输出默认值
- 为什么我得到这种输出,因为我知道数组中未初始化的整数元素的默认值是0
- C++ IO 二进制文件流:未指定输出时的默认值