文件操作 黑马教程(04)

1.文本文件 写文件

#include "iostream"
#include "fstream"
using namespace std;
/*
 * 文件操作
 *
 * 程序运行时产生的数据都属于临时数据,程序一旦结束都会被释放
 * 通过文件可以将数据持久化
 * C++中对文件操作需要包含头文件
 *
 * 文件类型分为两种:
 * 文本文件:文件以文本的ASCII码形式存储在计算机中
 * 二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们
 *
 * 操作文件的三大类:
 *      1.ofstream:写操作
 *      2.ifstream:读操作
 *      3.fstream:读写操作
 *
 * 写文件:
 *      1.包含头文件 #include
 *      2.创建流对象 ofstream ofs;
 *      3.打开文件 ofs.open("文件路径",打开方式);
 *      4.写数据 ofs<<"写入的数据";
 *      5.关闭文件 ofs.close();
 *
 * 文件打开方式:
 *      ios::in      为读文件而打开文件
 *      ios::out     为写文件而打开文件
 *      ios::ate     初始位置:文件尾
 *      ios::app     追加方式写文件
 *      ios::trunc   如果文件存在先删除,再创建
 *      ios::binary  二进制方式
 *      注意:文件打开方式可以配合使用,利用|操作符
 *      例如:用二进制方式写文件 ios:binary|ios:out
 *
 */

//文本文件 写文件
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;
}

2.文本文件 写文件

#include "iostream"
#include "fstream"

using namespace std;

/*
 * 读文件
 *
 * 读文件和写文件步骤相似
 */
void test01() {
    ifstream ifs;
    ifs.open("test.txt", ios::in);
    bool boolTemp = ifs.is_open();
    if (!boolTemp) {
        cout << "文件打开失败" << endl;
        return;
    }

    //4.读数据
    //第一种
//    char buf[1024]={0};
//    while(ifs>>buf){
//        cout<
//    }

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

    //第三种
    char c;
    while ((c = ifs.get()) != EOF) { //EOF 文件结果尾部的标志
        cout << c;
    }
    //5.关闭文件
    ifs.close();
}

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

3.二进制文件 读写

#include "iostream"

using namespace std;

#include "fstream"

/*
 * 二进制读写文件
 *
 * 二进制方式文件主要利用流对象调用成员函数 write
 * 函数原型 ostream & write(const char * buffer,int len)
 */

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 = {"张三", 19};
    ofs.write((const char *) &p, sizeof(p));
    //5.关闭文件
    ofs.close();
}

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

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

你可能感兴趣的:(c++)