如何在文件末尾以外的特定地址写入
How to write at a specific address past end of file
我正在使用一个fstream
对象,我想知道如何在文件末尾写入一些东西,而不必手动用零填充 eof 和所需位置之间的空间?
例:
fstream someFile;
someFile.open("foo.dat", ios :: out | ios :: trunc | ios :: binary); // file is created, and empty
someFile.seekp(100, ios :: beg); // expecting 100 zeroes to be written in file, but nothing happens
someFile.write("yodelay-hee-hoo", 15); // file is still empty, does not work
我已经在这个问题上搜索了大约一个小时,但我找不到任何相关的东西。我唯一遇到的是有人说将.seekp
与ios :: end
一起使用应该用零来填补空白,但我尝试过,它对我不起作用。
如果有帮助,我使用的是VS2010,本机编译。如果您可以提供提示,请表示感谢。
Short:如果之前使用 .seekg()
到达文件末尾,则.seekp()
失败,因此需要事先调用.clear()
。
长:
我发现我的写入操作失败了,因为我首先用 .seekg()
寻找文件末尾的位置,并通过首先检查.eof()
是否返回 false 然后查找带有 .peek()
的非空字符来验证该位置是否有数据。
问题是,即使.seekg()
到达文件末尾,.eof()
似乎也总是返回 false,直到尝试任何读取/查看/获取操作,并且.peek()
为文件末尾之后的任何位置返回非空值 (-1)。
因此,解决方案是在检查是否到达文件末尾之前检查非空字符,如果超过文件结尾,则在.seekp()
之前调用 .clear()
,它解决了所有问题。
相关文章:
- 在C++的头文件中使用常量并在程序中询问其地址的任何潜在危险
- 如何访问头文件中类的组件并打印它们的地址?
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- 读取 MAC 地址时文件读取异常
- 如何使用Qt为每个地址打印二进制文件
- 如何在 C++ 中转到具有特定地址的特定文件夹
- 无法从地址打开映射文件
- C++ - 使用代码块从文件中读取 IP 地址
- 如何使用QPixmap,以便在地址中只需要使用项目文件夹
- 我可以将文件描述符的地址分配给变量
- 映射文件中成员结构的地址
- 如何禁用调试控制台在我的代码中显示文件地址
- 如何在Windows上绕过主机文件获取真实的IP地址
- 如何在文件末尾以外的特定地址写入
- 在文件中存储十六进制地址
- 将二进制文件读取到向量元素的地址中
- 如何将GCC链接器固定地址添加到链接文件中
- 获取 PCAP 文件中数据包的 IP 地址
- 尝试使用可执行文件打开 url 地址
- 如何读取资源管理器文件夹地址