c++文件操作

文件类型

1、文本文件(文件以ASCLL码的形式存储在计算机上)

2、二进制文件(文件以文本二进制形式存在计算机,大部分看不懂)

c++对文件操作要包含头文件

操作文件三大类

1、ofstream:写操作
2、ifstream: 读操作
3、fstream:读写操作

文本文件的写入

步骤如下:

1、包含头文件

        #include

2、创建流对象

         ofstream ofs;(ofs为变量名随便起)

3、打开文件

        ofs.open("文件路径",打开方式);

4、写数据

        ofs<<"写出的数据";(和cout<<这个东东差不多,一个往控制台输出一个是往文件里输出,<<这个别搞混了就行

5、关闭文件

文件打开方式

 c++文件操作_第1张图片

#include//头文件
#include
using namespace std;
int main()
{
    ofstream ofs;//创建流对象
    
    ofs.open("text.txt",ios::out);//在cpp文件夹下创建了一个text文本文件;
    
    //直接和控制台输出一样的格式
    ofs<<"123"<

 c++文件操作_第2张图片

 如果打开方式是iOS::out他每次都是覆盖以前的文件,而不能接着以前文件写入。如果想接着以前文件写入,需要把ios::out换成(ios::out|ios::app)这样就可以了。

#include//头文件
#include
using namespace std;
int main()
{
    ofstream ofs;//创建流对象
    
    ofs.open("text.txt",ios::out|ios::app);//在cpp文件夹下创建了一个text文本文件;
    
    //直接和控制台输出一样的格式
    ofs<<"123"<

c++文件操作_第3张图片

这是又运行一次结果。

文件的读取 

#include//头文件
#include
using namespace std;
int main()
{
    fstream ifs;//创建流对象

    ifs.open("text.txt", ios::in);//读取文件要变成ios::in

    string a;
    while (ifs >> a)
        cout << a << endl;

    ifs.close();//关闭文件
    return 0;
}

把刚刚的文件读一下 

c++文件操作_第4张图片

 当然如果本生不存在这个文件你就读不了了,所以我们要加一个函数判断有没有这个文件

#include//头文件
#include
using namespace std;
int main()
{
    fstream ifs;//创建流对象

    ifs.open("text.txt", ios::in);//读取文件要变成ios::in
    
    if (ifs.is_open())//打开成功返回true
    {
        string a;
        while (ifs >> a)
            cout << a << endl;

        ifs.close();//关闭文件
    }
    else cout << "打开失败" << endl;
    return 0;
}

 我把text文件后加了个1很显然没有这个文件

78c87a63b2ac44e4ab684c3258fdbdda.png

 如果文件格式是这样的

 c++文件操作_第5张图片

 那就这样读

#include//头文件
#include
using namespace std;
int main()
{
    fstream ifs;//创建流对象

    ifs.open("text1.txt", ios::in);//读取文件要变成ios::in
    
    if (ifs.is_open())
    {
        string a;
        int b;
        while (ifs >> a >> b)
            cout << a << b << endl;

        ifs.close();//关闭文件
    }
    else cout << "打开失败" << endl;
    return 0;
}

c++文件操作_第6张图片

这样就成功了,注意有时候中文汉字读取出会有乱码,这个问题有的私下问我就行。

二进制文件 

1、写

#include//头文件
#include
using namespace std;
int main()
{
    ofstream ofs;//创建流对象

    ofs.open("text.txt", ios::out|ios::binary);/写文件要变成ios::out然后加上后面那个

    string a="张三";
    ofs.write((const char*)&a, sizeof(a));//需要用到write函数 第一个参数是一个const char *的类型第二个是大小
    ofs.close();
    return 0;
}

c++文件操作_第7张图片

2、读

#include//头文件
#include
using namespace std;
int main()
{
    ifstream ifs;//创建流对象
    ifs.open("text.txt", ios::in | ios::binary);//读取文件要变成ios::in
    if (!ifs.is_open()) return 0;//打开失败
    char a[100];
    ifs.read(a, sizeof(a));//用到read函数第一个是char *的类型
    cout << a << endl;
    ifs.close();
    return 0;
}

c++文件操作_第8张图片

 最后,建议二进制文件用char 的数组少用string ,string有一些不确定的因素。

有错误欢迎指出

你可能感兴趣的:(c++语言,c++,开发语言)