143讲 文件操作
内容纲要

文件操作

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放

通过文件可以将数据持久化

C++中对文件操作需要包含头文件

文件类型分为两种:

  1. 文本文件 --- 文本以文本的 ASCII码 形式储存在计算机中
  2. 二进制文件 -- 文本以文本的 二进制 形式存储在计算机中,用户一般不能直接读懂他们

操作文件的三大类:

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

写入文件

file

file

注意:文件打开方式可以配合使用,利用 | 操作符

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

#include <iostream>
#include <fstream> //1.引入头文件
#include <string>
using namespace std;
void test() {
    //2.创建输入/输出流对象
    ofstream ofs;

    //3.创建文件/打开文件
    ofs.open("test.txt", ios::out);

    //4.通过ofstream向文件里面添加内容.
    ofs << "姓名:法外狂徒张三" << endl;
    ofs << "年龄:18" << endl;
    //5.关闭文件
    ofs.close();
    //很像 JAVA 的德鲁伊数据流的创建与关闭啊。!!!
}

void main() {
    test();
    system("pause");
}

读取文件

file

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void test() {
    //2.创建对象
    ifstream ifs;
    //3.打开文件
    ifs.open("test.txt", ios::in);
    if (!(ifs.is_open()))
    {
        cout << "文件打开失败" << endl;
    }
    //4.添加内容。有多种方式。
    第一种:
    char charBuff[1024] = { 0 };
    while (ifs >> charBuff)
    {
        cout << charBuff << endl;
    }
    第二种:
    char charBuff[1024] = { 0 };
    while (ifs.getline(charBuff,sizeof(charBuff)))
    {
        cout << charBuff << endl;
    }
    cout << sizeof(charBuff) << endl;//1024

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

    第四种  //不推荐用
    char c;
    while ((c = ifs.get()) != EOF)  //EOF  end of file;文件尾部的标志
    {
        cout << c;
    }
    //5.关闭文件
    ifs.close();
}

void main() {
    test();
}

Summary

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

二进制文件

file

  • 在iris 项目中也有见过这类代码。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//同比于Iris 项目中的虹膜模板二进制的写入。

class Person {
public:
    char  name[1024];
    int age;
};

void test() {

    Person p = { "李四 " , 20 };
    //1.引入头文件
    //2.创建对象
    //ofstream ofs();
    ofstream ofs("Person.txt", ios::out | ios::binary);

    //3.打开文件
    //ofs.open("Person.txt", ios::out | ios::binary);//这里还可以在创建对象的时候就直接指定它的打开方式。

    //4.写入的内容;
    ofs.write((const char*)&p, sizeof(p)); 

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

}

void main() {
    test();
}

ofs.write((const char*)&p, sizeof(p));

  • 对文件进行操作的时候尽量不用C++ 的string 为了避免出现问题,建议使用C 语言的char 数组。

二进制文件读文件

file

istream& read(char *buffer,int len);

#include<iostream>
#include<fstream>
#include"string"
using namespace std;
class Person {
public:
    char m_Name[1024];
    int m_Age;
};

void test() {

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

void main() {
    test();
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇