VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 555|回复: 2

c++文件流fstream

[复制链接]
32_avatar_middle
最佳答案
0 
在线会员 发表于 2019-6-6 10:15:54 | 显示全部楼层 |阅读模式
10驿站币
可以往fstream的文件流的流头添加数据吗?我测试了下要是在流头加数据会把之后的替换掉?是我应用的不对还是没有这方法呢?





上一篇:求学习顺序和发方法(晕)
下一篇:VS2017编译的程序怎么才能正常在WIN2003或2000上面运行?
81_avatar_middle
最佳答案
3 
online_supermod 发表于 2019-6-6 16:11:50 | 显示全部楼层
貌似不能插入,但是通过设置文件指针的方式可以写在头的位置,但这样的话会把后面的覆盖,这就跟写文件一样!所以不建议往头部或者中间直接写
75_avatar_middle
最佳答案
0 
在线会员 发表于 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;
}


c++文件流fstream  


评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
32_avatar_small 496643881 + 1 + 1

查看全部评分

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-20 00:43

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表