C++文件操作

系列文章目录

C++内存存储模型

C++引用以及函数的占位、重载

C++封装与对象特性

C++对象特性及友元 

C++运算符重载及继承

C++多态

C++文件操作

C++模板



前言

在 C++ 中,文件操作主要通过 <fstream> 库来完成,该库提供了 ifstreamofstream 和 fstream 三个类,分别用于读取、写入和同时读写文件。


一、文本文件

  • 文件以文本的ASCII码形式存储在计算机中

1. 1写文件

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <fstream>

void test01()
{
    // 1.包含头文件
    // 2.创建流对象
    ofstream ofs;
    // 3.打开文件
    ofs.open("test.txt", ios::out);
    // 4.读写文件
    ofs << "姓名:张三" << endl;
    ofs << "性别:男" << endl;
    ofs << "年龄:18" << endl;
    // 5.关闭文件
    ofs.close();
}

int main()
{
    test01();
    return 0;
}
打开方式解释
los::in为读文件而打开文件
los::out为写文件而打开文件
los::ate初始位置:文件尾
los::app追加方式写文件
los::trunc如果文件存在先删除,再创建
los::binary二进制方式

 1.2总结

  • 文件操作必须包含头文件fstream
  • 读文件可以利用ofstream,或者fstream类
  • 打开文件时候需要指定操作文件的路径,以及打开方式
  • 利用<<可以向文件中写数据
  • 操作完毕,要关闭文件

2.1 读文件

//读文件

void test()
{
    //1.包含头文件
    //2.创建流对象
    ifstream ifs;
    //3.打开文件并判断是否打开成功
    ifs.open("test.txt", ios::in);
    if( !ifs.is_open() )
    {
        cout << "文件打开失败" << endl;
        return;
    }
    //4.读数据

    //第一种
    char buf[1024] = {0};
    while(ifs >> buf)
    {
        cout << buf << endl;
    }

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

    //第三种
    string buf;
    while(getline(ifs, buf))
    {
        cout << buf <<endl;
    }

    //第四种
    char c;
    while((c = ifs.get()) != EOF)
    {
        cout << c;
    }
    //5.关闭文件
}

int main()
{
    test();
    return 0;
}

2.2总结

  • 读文件可以利用ifstream,或者fstream类
  • 利用is_open函数可以判断文件是否打开成功
  • close关闭文件

二、二进制文件

1.1写文件

//二进制文件 写文件
class Person
{
public:
    char m_Name[64];
    int m_Age;
};

void test01()
{
    //1.包含头文件
    //2.创建流对象
    ofstream ofs;
    //3.打开文件
    ofs.open("person.txt", ios::out | ios::binary);
    //4.写文件
    Person p = {"张三", 18};
    ofs.write((const char *)&p, sizeof(Person));
    //5.关闭文件
    ofs.close();
}

int main()
{
    test01();
    return 0;
}

 1.2总结

  • 文件输出流对象可以通过write函数,以二进制方式写数据

2.1读文件

//二进制文件 读文件
class Person
{
public:
    char m_Name[64];
    int m_Age;
};

void test01()
{
    //1.包含头文件
    //2.创建流对象
    ifstream ifs;
    //3.打开文件并判断是否打开成功
    ifs.open("person.txt", ios::in | ios::binary);
    if (!ifs.is_open())
    {
        cout << "文件打开失败" << endl;
        return;
    }
    //4.读文件
    Person p;
    ifs.read((char *)&p, sizeof(Person));
    cout << "姓名: " << p.m_Name << " 年龄: " << p.m_Age << endl;
    //5.关闭文件
    ifs.close();
}

int main()
{
    test01();
    return 0;
}

2.2总结

  • 文件输入流对象,可以通过read函数,以二进制方式读数据

总结

  • 文件流:文件流是 C++ 中用于处理文件的对象。它可以是输入流(用于从文件读取数据),输出流(用于向文件写入数据),或者既是输入流又是输出流。

  • 打开文件:在进行文件操作之前,需要先打开文件。可以使用文件流对象的 open 方法来打开文件。如果文件不存在,输出流会创建一个新的文件。

  • 关闭文件:在完成文件操作后,应该关闭文件。可以使用文件流对象的 close 方法来关闭文件。

  • 读取文件:可以使用输入流对象的 read 方法来从文件读取数据。read 方法接收两个参数:一个是数据的地址,一个是数据的大小。

  • 写入文件:可以使用输出流对象的 write 方法来向文件写入数据。write 方法接收两个参数:一个是数据的地址,一个是数据的大小。

  • 二进制文件和文本文件:在 C++ 中,文件可以是二进制文件或文本文件。二进制文件包含了二进制数据,而文本文件包含了文本数据。在打开文件时,可以指定文件的类型。例如,ios::binary 表示二进制文件,ios::in 表示输入(读取)文件,ios::out 表示输出(写入)文件。

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Dev C++是一个集成开发环境(IDE),用于C和C++编程。它提供了许多功能和工具,包括文件操作。下面是一些关于Dev C++文件操作的介绍: 1. 打开文件:使用`fopen`函数可以打开一个文件。例如,要打开一个名为"example.txt"的文本文件,可以使用以下代码: ```c FILE *file = fopen("example.txt", "r"); ``` 这将返回一个指向文件的指针。 2. 关闭文件:使用`fclose`函数可以关闭一个已打开的文件。例如,要关闭之前打开的文件,可以使用以下代码: ```c fclose(file); ``` 3. 读取文件内容:使用`fscanf`函数可以从文件中读取内容。例如,要从文件中读取一个整数,可以使用以下代码: ```c int num; fscanf(file, "%d", &num); ``` 4. 写入文件内容:使用`fprintf`函数可以向文件中写入内容。例如,要向文件中写入一个字符串,可以使用以下代码: ```c fprintf(file, "Hello, World!"); ``` 5. 检查文件结尾:使用`feof`函数可以检查是否已到达文件的结尾。例如,要检查是否已到达文件的结尾,可以使用以下代码: ```c if (feof(file)) { printf("已到达文件结尾\n"); } ``` 6. 检查文件是否成功打开:在打开文件时,可以检查返回的文件指针是否为NULL,以确定文件是否成功打开。例如,可以使用以下代码: ```c if (file == NULL) { printf("无法打开文件\n"); } ``` 这些是Dev C++文件操作的基本介绍。你可以使用这些函数来读取和写入文件内容。如果你有其他关于Dev C++文件操作的问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值