c++文件流的问题
实现功能:用2进制方式打开已存在文件并且不覆盖原有内容,使用文件定位函数来控制写入新内容的位置。遇到问题:我用ios::app|ios::binary方式打开文件,虽然旧...
实现功能:
用2进制方式打开已存在文件并且不覆盖原有内容,使用文件定位函数来控制写入新内容的位置。
遇到问题:
我用ios::app|ios::binary方式打开文件,虽然旧内容没有被删除,但写入指针始终从文件末尾开始,seekp()失效。
我用ios::ate|ios::binary方式打开文件,虽然seekp()可用,但旧内容被删除。
vc++6.0中实验,txt文件验证。
还请大虾们多多指点迷津啊
回答1楼:
那是c的实现方式,我想用c++中的fstream流来实现。 展开
用2进制方式打开已存在文件并且不覆盖原有内容,使用文件定位函数来控制写入新内容的位置。
遇到问题:
我用ios::app|ios::binary方式打开文件,虽然旧内容没有被删除,但写入指针始终从文件末尾开始,seekp()失效。
我用ios::ate|ios::binary方式打开文件,虽然seekp()可用,但旧内容被删除。
vc++6.0中实验,txt文件验证。
还请大虾们多多指点迷津啊
回答1楼:
那是c的实现方式,我想用c++中的fstream流来实现。 展开
2个回答
展开全部
当用 fstream 或 ofstream 创建一个输出文件流实例时, 为了防止原文件内容被截去, 必须在打开模式中加入 ios::in 标志, 例如:
// 方法1: 使用 fstream 创建
fstream outfile("test.txt", ios::in | ios::out);
// 方法2: 使用 ofstream 创建
ofstream outfile("test.txt", ios::in);
用以上任一种方法创建实例, 再调用 seekp() 就可以解决你的问题, 不用加入 ios::app 或 ios::ate.
// 方法1: 使用 fstream 创建
fstream outfile("test.txt", ios::in | ios::out);
// 方法2: 使用 ofstream 创建
ofstream outfile("test.txt", ios::in);
用以上任一种方法创建实例, 再调用 seekp() 就可以解决你的问题, 不用加入 ios::app 或 ios::ate.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询