> 文档中心 > 成长随心记6

成长随心记6

今日心得:今天一大早心血来潮想着来刷一道算法题来,想着正好复习一下刚学的栈,觉得自己应该能在一个小时差不多解决吧,没想到两个小时过去了,还是调试不出来
在力扣上看别人的代码,发现一堆啥都不认识,什么容器Victor,一个栈的题目要用到哈希表,我表示我还没有学到啊,深深的感觉到自己的弱小,哎,还有很长的路要走啊。
今天是非常不顺利的一天,真正让我体验到了什么叫代码5分钟,debug两小时。

1,文件操作
    1)程序运行的时候一般是临时数据,程序一结束,数据消失
    2)所以通过文件操作可以使数据持久化
    3)文件操作必须包含头文件fstream
    读文件可以可以用ofstream或者fstream类
    打开文件是需要指定路径,以及打开方式
    利用<<可以向文件输入数据
    操作结束需要关闭文件

2,文件打开方式
    1)ios:in        读文件
    2)ios:out    写文件
    3)ios:ate        初始位置,文件尾
    4)ios:app    追加方式写文件
    5)ios:trunc    如果文件存在,先删除文件再创建文件
    6)iso:binary    二进制方式
    注意:ifs.isopen()用来判断文件是否打开成功

3,写文件基本步骤
    1)包含头文件fstream
    2)创建流对象ofstream ofs;
    3)打开文件ofs.open("文件路径",打开方式)//如果要追加打开方式用|隔开
    4)写入文件ofs>>“数据”
    5)关闭文件
    例:#include
    int main()
    {
        ofstream ofs;
        ofs.open("text.txt", ios::out);
        ofs << "张三" << endl;
        ofs << "李四" << endl;
        ofs.close();
    }
4,三种读文件的基本操作
    1)包含头文件fstream
    2)创建流对象ifstream ifs;
    3)打开文件ifs.open("文件路径",打开方式);
    #include
    int main()
    {
        ifstream ifs;
        ifs.open("text.txt", ios::in);
        /*char c;
        while ((c = ifs.get()) != EOF)
            cout << c;*/

        /*char buf[1000];  
        while (ifs.getline(buf, sizeof(buf)))//getline()读取一行数据
            cout << buf;*/

        /*char buf[1000];
        while (ifs >> buf)
            cout << buf;*/
        ifs.close();
    }

5,二进制写文件
    与上类似,所以直接上代码
    例:#include
    class person {
    public:
        char name[10];
        int age;
    };
    int main()
    {
        ofstream ofs;
        ofs.open("text.txt", ios::out | ios::binary);
        person p = { "张三",18 };
        ofs.write((const char*)&p, sizeof(p));//write用来写文件
        ofs.read((const char*)&p, sizeof(p));//read用来读文件
        ofs.close();
    }