C++___IO流__读写文件

ifstream/ofstream

get          put

read        write

>>            <<                内置类型/自定义类型 

实现写读文件
1、二进制读写
2、文本读写
内存分数据类型,磁盘不分

二进制读写

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include <string>
#include<fstream>
using namespace std;
struct ServerInfo
{
	char _address[32];
	double _x ;
};

//写到文件
//读出来
//1、二进制读写
//2、文本读写
//内存分数据类型,磁盘不分
class BinIO
{
private:
	string _filename;
public:
	// 构造函数,初始化文件名
	BinIO(const char* filename = "info.bin")
		:_filename(filename)//初始化
	{}

	//写——把ServerInfo里面的winfo写出去
	void Write(const ServerInfo&winfo)
	{
		//创建文件输出流对象ofs,将数据写入文件中
		//ofstream ofs(_filename, ios_base::out);
		ofstream ofs(_filename, ofstream::out|ofstream::binary);

		ofs.write((char*)&winfo, sizeof(winfo));
	}
    //读——把文件中的数据写出去
	void Read(ServerInfo& rinfo)
	{
		ifstream ifs(_filename, ofstream::in | ofstream::binary);
		ifs.read((char*)&rinfo, sizeof(rinfo));
	}
};

//写文件调用

//写
int main()
{
	ServerInfo winfo = { "192.0.0.1",12.13 };
	
	BinIO bin;
	bin.Write(winfo);
	return 0;
}

//读文件调用

int main()
{
	ServerInfo info;
	BinIO bin;
	bin.Read(info);
	return 0;
}

//结果如下

尝试用string

发现只要是容器都要小心,不能用二进制方式写容器

否则可能会出现野指针(在不同进程中是野指针)

要不然就是浅拷贝(相同进程中)

文本读写

c/c++转string方式

函数转化

	//c
	double x = 1.111;
	char buff[128];
	sprintf(buff, "%lf", x);

	//c++
	to_string(x);
	return 0;

流插入和流提取转换

		ofstream ofs(_filename);
		ofs << winfo._address;
		ofs << winfo._x;

一些乱七八糟的小记:

 从内存流动到硬盘

文件

单个字符

fgetc        fputc

一段字符串\内存

fread        fwrite

进行格式化

fprintf        fscanf

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值