C++文件的读写

文章目录

  • 1 文件打开方式
  • 2 文本文件的读写
  • 3 二进制文件的读写

1 文件打开方式

  

打开方式 用途
ios::in 读文件
ios::out 写文件
ios::ate 初始位置:文件尾
ios::app 追加
ios::trunc 文件存在则先删除再创建
ios::binary 二进制方式

  文件打开方式可以配合使用,用“|”间隔:
  例如二进制方式写文件:ios::binary | ios::out

2 文本文件的读写

#include
#include
#include


void output_test(std::string);
void input_test(std::string);


int main()
{
     
	std::string file_name = "test.txt";
	output_test(file_name);
	input_test(file_name);
}


void output_test(std::string file_name) {
     
	std::ofstream ofs;
	ofs.open(file_name, std::ios::out);
	for (int i = 0; i < 5; i++)
	{
     
		ofs << "第" << i << "行\n";
	}
	ofs.close();
}

void input_test(std::string file_name) {
     
	std::ifstream ifs;
	ifs.open(file_name, std::ios::in);
	if (ifs.is_open())
	{
     
		// 第一种
		/*
		char buf[104] = { 0 };
		while (ifs >> buf)
		{
			std::cout << buf << std::endl;
		}
		*/
		
		// 第二种
		/*
		char buf[104] = { 0 };
		while (ifs.getline(buf, sizeof(buf)))
		{
			std::cout << buf << std::endl;
		}
		*/

		// 第三种
		std::string buf;
		while (getline(ifs, buf)) 
		{
     
			std::cout << buf << std::endl;
		}
	}
	ifs.close();
}

3 二进制文件的读写

#include
#include
#include


struct Person {
     
	int height = 666;
	std::string name = "张三";
}p;


void output_test(std::string);
void input_test(std::string);


int main()
{
     
	std::string file_name = "test.txt";
	output_test(file_name);
	input_test(file_name);
}


void output_test(std::string file_name) {
     
	std::ofstream ofs(file_name, std::ios::out | std::ios::binary);
	ofs.write((const char*)&p, sizeof(p));
	ofs.close();
}

void input_test(std::string file_name) {
     
	std::ifstream ifs(file_name, std::ios::out | std::ios::binary);

	Person p1;
	if (ifs.is_open())
	{
     
		ifs.read((char *)&p1, sizeof(p1));
	}
	std::cout << p1.height << p1.name;
	ifs.close();
}

你可能感兴趣的:(#,C++,c++,文件读写,因吉)