fstream之seekp/seekg/ios::ate/ios::app

在程序开发中,IO处理无处不在,经常会在代码中遇到特殊的IO处理需求

1、描述

需求:如果文件不存在则创建,存在则打开,然后先读取文件的末行,然后在文件末尾写入。

代码:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(int argc, char **argv)
{
    fstream fst;
    string strTemp;
    fst.open("test3", ios::in | ios::out);
    //fst.seekp(0, fstream::beg);
    while (!fst.eof())
    {
        getline(fst, strTemp);
        cout << strTemp << endl;
    }
    cout << strTemp;

    fst.seekg(0, fstream::end);
    fst << "\nhhfdsfds";
    fst.close();
    return 0;
}

因为fstream对象是作为读写同时打开的,在读和写转换之间,会使流失效,这个具体还要去参考《标准C++输入输出流与本地化》这本书。

2、ios::ate/ios::app的区别

ios::ate是使文件打开时将文件读取位置移动到文件尾

ios::app是打开文件并在文件尾部添加数据

3、seekp/seekg的区别

seekp是指设置输入流的文件读取位置,对应读取输入流的文件读取位置为tellp

seekg是指设置输出流的文件插入位置,对应读取输出流的文件插入位置为tellg

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值