C++中ofstream实现二进制文件dat的写入

1、使用ofstream将文本、数据输出到dat文件中;2、借助iomanip实现数据的格式化输出;3、解决二次输出时之前的输出被覆盖的问题

0、前言

使用C++的文件输出流可以将数据存储到二进制文件中。在网上搜了一下大多是改成字符串后输出,但在vs上测试了一下,也可以输出double数据,并且可以实现类似C语言的%5.4f(不足五位右补齐,小数点后保留4位)格式化输出。

1、添加头文件

#include  //文件输出流
#include  //io流控制

2、创建dat文件并输出字符串和数据

//创建文件
ofstream f("test.dat", ios::binary);//binary为二进制
	if (!f)
	{
		cout << "创建文件test.dat失败" << endl;
	}
//输出字符串"hello"到test.dat文件
string str1 = "hello";
f << str1 << endl;
//输出数据123.45到test.dat文件
double num = 123.456789;
f << num <<endl;//使用这种方式可以直接将double数据输出,不需要转string

3、格式化输出数据

//将num以靠左对齐,五位有效数字,小数点后两位输出
f << fixed << left << setw(5) << setprecision(2) << num << endl; //没错,不仅cout可以这么用

4、解决二次输出会将上次输出覆盖的问题

问题:
当第二次使用ofstream输出时,会把上一次输出的文件覆盖掉(实际上它重新创建了该文件)。
解决方法:
在第二次输出时将ios::binary 改成ios::app

ofstream f2("test.dat", ios::app);//这样可以避免test.dat中之前的文本被覆盖掉
	if (!f2)
	{
		cout << "创建文件test.dat失败" << endl;
	}

你可能感兴趣的:(C++文件操作,c++,开发语言)