【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]

前言

大家好吖,欢迎来到 YY 滴 系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]_第1张图片

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

  • YY的《C++》专栏
  • YY的《C++11》专栏
  • YY的《Linux》专栏
  • YY的《数据结构》专栏
  • YY的《C语言基础》专栏
  • YY的《初学者易错点》专栏
  • YY的《小小知识点》专栏
  • YY的《单片机期末速过》专栏
  • YY的《C++期末速过》专栏

目录

  • 一.C++文件IO流基本知识
    • 1)采用文件流对象操作文件的一般步骤:
    • 2)定义一个文件流对象
    • 3)文件内容的数据格式分类
    • 4)从“输入输出”角度理解——>文件IO和基础IO记忆(cout&cin)
  • 二.C++文件IO流操作完整演示(代码)

一.C++文件IO流基本知识

1)采用文件流对象操作文件的一般步骤:

  1. 定义一个文件流对象
  2. 使用文件流对象的成员函数打开一个磁盘文件,使得文件流对象和磁盘文件之间建立联系
  3. 使用提取和插入运算符对文件进行读写操作,或使用成员函数进行读写
  4. 关闭文件

2)定义一个文件流对象

C++中定义一个文件流对象有三种

  • ifstream ifile(只输入用)
  • ofstream ofile(只输出用)
  • fstream iofile(既输入又输出用)

3)文件内容的数据格式分类

  • C++根据文件内容的数据格式分为 二进制文件 文本文件

4)从“输入输出”角度理解——>文件IO和基础IO记忆(cout&cin)

  • 在基础IO中——cout是读操作,cin是写操作
  • 而在文件IO中——cout是写操作,cin是读操作
  • 我们可以这么理解:
  1. 基础IO中,我们操作的对象是键盘,输入对象是显示器,cout把程序的内容输出给显示器(读),cin把键盘的内容输出给显示器(写);
  2. 在文件IO中,我们操作的对象是文件,cout把程序的内容输出给文件(写),cin把文件输出给显示器(读); 【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]_第2张图片

二.C++文件IO流操作完整演示(代码)

struct ServerInfo
{
	char _address[32];
	// 二进制读写不能用string vector这样的对象存数据
	// 否则写出去就是一个指针,进程结束就是野指针,另一个进程再读进来进坑了
	//string _address;
	int _port;

	Date _date;
};

struct ConfigManager
{
public:
	ConfigManager(const char* filename = "file.txt")
		:_filename(filename)
	{}

	// 二进制读写 -- 简单高效,缺点:写到文件中的内容看不懂
	void WriteBin(const ServerInfo& info)
	{
		ofstream ofs(_filename, ios_base::out | ios_base::binary);//定义一个文件流对象
		ofs.write((const char*)&info, sizeof(info));
	}
	void ReadBin(ServerInfo& info)
	{
		ifstream ifs(_filename, ios_base::in | ios_base::binary);//定义一个文件流对象
		ifs.read((char*)&info, sizeof(info));
	}

    //文本读写
	void WriteText(const ServerInfo& info)
	{
		ofstream ofs(_filename);//定义一个文件流对象
		ofs << info._address << " " << info._port << " " << info._date;
	}
	void ReadText(ServerInfo& info)
	{
		ifstream ifs(_filename);//定义一个文件流对象
		ifs >> info._address >> info._port >> info._date;
	}
private:
	string _filename; // 配置文件
};

int main()
{
	ServerInfo winfo = { "192.0.0.1111111111111111111", 80, { 2022, 4, 10 } };
	ConfigManager cm("test.bin");
	cm.WriteBin(winfo);

	return 0;
}

int main()
{
	ConfigManager cf_bin("test.bin");
	ServerInfo rbinfo;
	cf_bin.ReadBin(rbinfo);
	cout << rbinfo._address << "  " << rbinfo._port << "  " << rbinfo._date << endl;

	return 0;
}

int main()
{
	ServerInfo winfo = { "192.0.0.1111111111111111111", 80, { 2022, 4, 10 } };
	ConfigManager cm("test.txt");
	cm.WriteText(winfo);

	return 0;
}

int main()
{
	ConfigManager cf_bin("test.txt");
	ServerInfo rbinfo;
	cf_bin.ReadText(rbinfo);
	cout << rbinfo._address << "  " << rbinfo._port << "  " << rbinfo._date << endl;

	return 0;
}

int main()
{
	ifstream ifs("Test.cpp");
	char ch;
	while (ifs.get(ch))
	{
		cout << ch;//全读
	}

	return 0;
}

你可能感兴趣的:(YY,滴,《C++系列》,c++,数据库,nosql)