专栏首页算法微时光C++中文件读写操作

C++中文件读写操作

fstreaml类

fstream提供了三个类,用来实现c++对文件的操作(文件的创建、读、写)

  1. fstream 文件流
  2. ifstream 输入文件流
  3. ofstream 输出文件流

打开文件

文件打开模式:

标示

含义

ios::in

只读

ios::out

只写

ios::app

从文件末尾开始写,防止丢失文件中原来就有的内容

ios::binary

二进制模式

ios::nocreate

打开一个文件时,如果文件不存在,不创建文件

ios::noreplace

打开一个文件时,如果文件不存在,创建该文件

ios::trunc

打开一个文件,然后清空内容

ios::ate

打开一个文件时,将位置移动到文件尾

使用代码举例:

  ifstream infile;   //输入流
  ofstream outfile("test.txt", ios::out);   //输出流
  infile.open("data.txt", ios::in); 
  fstream fst("data.txt", ios::in | ios::out);

关闭文件

使用成员函数close,如:

f.close();

读写操作

读取文件

读取一行:

infile.getline(data, 100);
infile >> data; 

在 C++ 编程中,使用流提取运算符( >> )从文件读取信息,就像使用该运算符从键盘输入信息一样。唯一不同的是,在这里使用的是 ifstream 或 fstream 对象.

写入文件

写入一行:

outfile << data << endl;

使用流插入运算符( << )向文件写入信息.

文件指正位置

// 定位到 fileObject 的第 n 个字节(假设是 ios::beg)
fileObject.seekg( n );
 
// 把文件的读指针从 fileObject 当前位置向后移 n 个字节
fileObject.seekg( n, ios::cur );
 
// 把文件的读指针从 fileObject 末尾往回移 n 个字节
fileObject.seekg( n, ios::end );
 
// 定位到 fileObject 的末尾
fileObject.seekg( 0, ios::end );

应用实例

int main() {
    fstream picture_fp, rar_fp,output_fp;
    char data;
    string data2;
    char picture_filename[50], rar_filename[50], output_filename[50];
    cout << "Please input the picture name :" << endl;
    cin>>picture_filename;
    cout << "Please input the rar file name :" << endl;
    cin >> rar_filename;
    cout << "Please input the output file name :" << endl;
    cin >> output_filename;

    picture_fp.open(picture_filename, ios::in|ios::binary);
    if (!picture_fp.is_open()) {
        cout << "打开失败" << endl;
    }
    rar_fp.open(rar_filename, ios::in | ios::binary);
    if (!rar_fp.is_open()) {
        cout << "打开失败" << endl;
    }
    output_fp.open(output_filename, ios::out | ios::binary);
    while (!picture_fp.eof())
    {
        data=picture_fp.get() ;//读一个字符
        //picture_fp >> data2;//读一行
        output_fp << data;
    }
    picture_fp.close();
    while (!rar_fp.eof())
    {
        data=rar_fp.get() ;//读一行
        output_fp << data;
    }    
    rar_fp.close();
    output_fp.close();

    system("pause");
}

参考

c++文件读写操作 C++ 文件和流

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python pytz时区转换

    pytz将Olson tz数据库带入Python。该库允许使用Python 2.4或更高版本进行准确的跨平台时区计算。它还解决了夏令时结束时时间模糊的问题

    李小白是一只喵
  • YouCompleteMe插件问题:The ycmd server SHUT DOWN

    李小白是一只喵
  • 深度学习之开启神经网络之旅

    这是一个特殊的有向图,θ称为权重,x0称为偏置项,函数f是激活函数。在感知器模型中,激活函数是sign;在逻辑回归中,激活函数是sigmoid。

    李小白是一只喵
  • 丢人现眼……GitHub阿波罗11号代码仓库惨遭中文灌水

    昨天登上GitHub趋势热榜第一的阿波罗11号(Apollo 11)代码仓库,获得了3万多标星称赞,但也同时惨遭中文灌水的侵扰,引发了众多网友的热议。

    量子位
  • GitHub阿波罗11号代码仓库惨遭中文灌水,丢人现眼……

    近日,阿波罗登月飞船代码在GitHub上的开源,引起广大程序猿的关注,但却惨遭中文灌水,这无疑不是一件光彩的事情。

    xcbeyond
  • 文件句柄与文件描述符

    1.概述 在实际工作中会经常遇到一些bug,有些就需要用到文件句柄,文件描述符等概念,比如报错: too many open files, 如果你对相关知识一无...

    用户1263954
  • 昨天有人留言给我说,“js难的是逻辑,不是基础知识”。我表示反对

    js逻辑难? 留言的这位同学是指,true,false,什么 || && ==之类的么?再有什么位运算之类的我用的比较少,每次看完二进制的资料之后不到五分钟...

    web前端教室
  • 全栈工程师15年经验分享:40个改变编程技能的小技巧

    最近,这样一份「心得」火了。这位名叫Kesk Noren的软件工程师在Medium上分享了一篇博文——「40 Tips that will change you...

    量子位
  • 经济学人:人工智能正颠覆传统战争,一场新军备竞赛或将开启

    今年阅兵的两个大杀器——DF-17和DF-41被广泛关注,然而文摘菌却从三个无人作战方队中,看到了一丝不寻常。

    大数据文摘
  • 使用这几款插件,能让你在GitHub看代码的效率翻倍

    想必在GitHub上看代码交友等已经成为各大猿友们的日常。想起小编,每每在GitHub上看代码时,总感觉没有直接在IDE上看的方便。但又不想看一个代码就连带gi...

    短短的路走走停停

扫码关注云+社区

领取腾讯云代金券