c++文件操作-文本文件-读写文件

目录

1.文件操作三大类:(文件流)

2.文件打开方式:

3.文本文件--写文件的步骤:

示例1:用ios::out写东西到文件中

 4.文本文件--读文件的步骤:

示例2:用ios::in把文件内容读出来

最近整理了一下c++的知识点,在此记录一下。

为什么要学习文件操作:

程序中运行产生的数据都属于临时数据,程序一旦运行结束,数据都被释放,通过文件可以将数据持久化。

  1. c++文件操作需要包含头文件<fstream>。
  2. 文件类型分为两种:

文本文件:文本文件存储的是ASCII码,文件的内容可以直接进行输入输出;

二进制文件:二进制文件直接将字符存储,不能将二进制文件的内容直接输出到屏幕上。

1.文件操作三大类:(文件流)

ofstream 写操作, o代表output , f代表文件

ifstream 读操作, i代表input , f代表文件

fstream 读写操作

2.文件打开方式:

ios :: in

只读打开

ios :: out

只写打开

ios :: ate

在文件末尾打开 (ate:at the end)

ios :: app

以追加的方式写文件

ios :: trunc

如果文件先删除再创建后打开

ios :: binary

二进制方式操作文件

注意:文件打开方式可以配合使用,利用  “|” (或)操作符。

例如:用二进制方式写文件:ios::binary | ios::out

3.文本文件--写文件的步骤:

  • 包含头文件:#include<fstream>;
  • 创建流对象:ofstream ofs;
  • 打开文件:ofs.open("文件路径",打开方式);
  • 写数据:ofs<<"写入的数据";
  • 关闭文件:ofs.close();

示例1:用ios::out写东西到文件中

#include <iostream>
#include <fstream>

using namespace std;


//文本文件——写文件
void test1()
{
    //1.包含头文件

    //2.创建流对象
    ofstream ofs;

    //3.指定打开方式
    ofs.open("daidia.txt",ios::out);//此处不指定文件生成路径,默认在当前工程文件夹下

    //4.写内容
    ofs << "日期:2023.04-25" << endl;
    ofs << "天气:阴" << endl;
    ofs << "工作:学习c++" << endl;

    //5.关闭文件
    ofs.close();

}


int main()
{
    test1();
    
}

效果:找到工程文件夹路径就可以看到daidia.txt文件。打开:

 4.文本文件--读文件的步骤:

  • 包含头文件:#include<fstream>;
  • 创建流对象:ifstream ifs;
  • 打开文件:ifs.open("文件路径",打开方式);
  • 读数据:四种方式读数据
  • 关闭文件:ifs.close();

示例2:用ios::in把文件内容读出来

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

using namespace std;

//文本文件——读文件
void test2()
{
    //1.包含头文件

    //2.创建流对象
    ifstream ifs;

    //3.打开文件,判断文件是否打开成功
    ifs.open("daidia.txt", ios::in);
    if (!ifs.is_open())
    {
        cout << "文件打开失败" << endl;
        return;
    }

    //4.读文件内容
    //第一种
    char buff[1024] = { 0 };
    while (ifs>>buff)
    {
        cout << buff << endl;
    }

    //第二种
    /*char buff[1024] = {0};
    while (ifs.getline(buff, sizeof(buff)))
    {
        cout << buff << endl;
    }*/

    //第三种
    /*string buff;
    while (getline(ifs, buff))  //如果此处使用getline报错,头文件加入#include <string>
    {
        cout << buff << endl;
    }*/

    //第四种,效率低
    /*char c;
    while ((c = ifs.get()) != EOF)//EOF:end of file,循环判断是否读到文件尾,没读到一直读
    {
        cout << c ;
    }*/



    //5.关闭文件
    ifs.close();

}


int main()
{
    //test1();
    test2();
}

猜你喜欢

转载自blog.csdn.net/weixin_55735677/article/details/130361433