|
发表于 2019-6-6 23:15:26
|
显示全部楼层
系统没提供,但是有两种方法可以实现
1、弄两个流。一个为新建流,写入要从头插的数据,
再打开第二流追加进入到它后面。
2、通过内存交换,例程如下:
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <sstream>
#include <fstream>
using namespace std;
int main()
{
//要从头插入的文本
string str = "1234567890";
fstream fo;
//为示范添加的文本
fo.open("111.txt", ios::binary|ios::out);
fo << "abcdefghijklmnopqrstuvwxyz";
fo.close();
//打开获取文件长度
fo.open("111.txt", ios::binary | ios::in | ios::out);
int len = (int)fo.seekg(0, ios::end).tellg();
//分配内存,预留空间
int addlen = str.length();
char*p = new char[addlen +len];
memset(p,0, addlen + len);
//写从头插入的文本
memcpy(p, str.c_str(), addlen);
//读到内存
fo.seekg(0, ios::beg).read(p+addlen, len);
//写回文件
fo.seekp(0, ios::beg).write(p, len + addlen);
fo.close();
delete[]p;
//显示文件
fo.open("111.txt", ios::binary | ios::in);
len = (int)fo.seekg(0, ios::end).tellg();
p = new char[len+1];
memset(p, 0, len+1);
fo.seekg(0, ios::beg).read(p, len);
fo.close();
cout << p<<endl;
delete[]p;
return 0;
}
|
评分
-
查看全部评分
|