C++ 二进制读写整数
由于文本文件中会存在各种问题,比如说无法区分数据类型。拿项目中的代码当作例子来讲,我现在需要保存一个二维整数类型的vector到硬盘上,因为每次生成这个vector需要花费大量的时间,那么一个很直观的想法就是将vector直接保存到硬盘上,然后直接从硬盘读取这个数据。
但是,问题来了,如果我们使用文本的形式写入硬盘时候,那么vector中的一些数据将会变成一些其他符号,比如说回车符,换行符等等。并且我们写入的时候如果数据之间没有任何标记,那么写入的将会是一串连续的数字,比如说:
fstream file(fileName,ios::in);
file>>1>>2;
那么写入将会是12,我们没有办法区别是1,2还是12。这样文件读出来的时候将会出现问题。
如果我们在每一个数字后面添加一个空格是一个不错的想法,但是这样会写入大量无效的数据。读取时候也会麻烦。这就是我们为什么读写二进制的原因,如果使用二进制读写将不会存在这个问题。
写入二进制文件
ofstream out(filename,ios::binary);
int num = 20;
out.write((char*)&num, sizeof(int));
out.close();
读取二进制文件
ifstream out(filename,ios::binary);
int num;