c++文件流的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 18:14:35
实现功能:
用2进制方式打开已存在文件并且不覆盖原有内容,使用文件定位函数来控制写入新内容的位置。
遇到问题:
我用ios::app|ios::binary方式打开文件,虽然旧内容没有被删除,但写入指针始终从文件末尾开始,seekp()失效。
我用ios::ate|ios::binary方式打开文件,虽然seekp()可用,但旧内容被删除。

vc++6.0中实验,txt文件验证。
还请大虾们多多指点迷津啊
回答1楼:
那是c的实现方式,我想用c++中的fstream流来实现。

当用 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.

用 FILE *fp=fopen("C:\\1.txt","rb+");
不行吗?