最近在学习C++的文件操作,看到了有关将对象写入文件的操作,于是乎也想做这样的事情,可是网上找不到一很好的实例,在此将我自己写的实例贴出来,以供后来人参考
#include<iostream>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#include<string>
using namespace std;
class student{
public:
string name;
int age;
public:
void setName(string & name){
this->name=name;
}
void setAge(int & age){
this->age=age;
}
string & getName(){
return this->name;
}
int & getAge(){
return this->age;
}
};
void main(void)
{
student st;
cout<<fixed<<right;
string a="小猪";
st.setName(a);
int b=21;
st.setAge(b);
const char * file="filetest.dat";
ofstream fout(file,ios_base::out|ios_base::app|ios_base::binary);//以二进制模式打开以写入只追加打开文件
if(!fout.is_open())
{
cerr<<"无法打开"<<file<<endl;
exit(EXIT_FAILURE);
}
fout.write((char*)&st,sizeof st);
fout.flush();
fout.close();
ifstream fin;
fin.open(file,ios_base::in|ios_base::binary);
if(fin.is_open())
{
student st2;
while(fin.read((char*)&st2,sizeof st2))//以一个对象的长度进行读取
{
cout<<"读出的年龄是:"<<st2.age<<endl;
cout<<"读出的名字是:"<<st2.name<<endl;
}
fin.close();
}
}
|
运行结果:
但是该程序还有一个问题,因为名字是string类型,string对象本身实际上并没有包含字符串,而是包含了一个指向其中存储了字符串的内存单元的指针,因为存入的将不是字符串的数据面是字符串存储的地址,当再次运行时该地址将毫无意义
发现对象的名字已经无法再取出来了,对于该问题目前正在解决中,期待我的下篇日志,嘿嘿
分享到:
相关推荐
C/C++实现简单的二进制文件读取和写入示例 1.包含如何读取和写入数字,以及用缓存按字节读取 2.采用标准输入和输出函数创建、打开、关闭文本文件或二进制文件
把二进制文件中的数据读出,并写入到一个txt文件中去 (read the data a binary file, and write the data into a txt file)
读取二进制文件,解析字符串,然后写入二进制数据。比较基础
Protoson 是一个用于以二进制格式对非结构化数据进行编码和解码的库。...Protoson 可以在根中对二进制数据和其他数据类型进行编码,而无需明确要求父对象或数组。 更多详情、使用方法,请下载后阅读README.md文件
本段代码描述了如何使用C++的fstream库来读写文本文件和二进制文件。对于文本文件,我们使用std::ofstream和std::ifstream类,并通过流操作符和>>或std::istreambuf_iterator来写入和读取文本数据。对于二进制文件,...
vc将二进制文件通过CArchive读出,再写入excel.
2.C++ 3.文件写3个浮点数,英文字符,中文字符 4.文件读3个浮点数,英文字符,中文字符 5.基于MFC的实例 6.获取文件长度 7.修改文件内指针位置 8.如果没有VS2010,用记事本打开TestFileOperateDlg.cpp 看文档最下方的...
C++文件读取与写入,而且使用二进制方式
教会你在c++中文件读取的本质,文件读取写入是如此简单
但是一般将内容不是文字,记事本打开看是乱码的文件,称为二进制文件。word文件记事本打开看是乱码,因此也是二进制文件 文件读写相关函数在头文件 cstdio (或stdio.h)中声明#include fopen函数打开文件, 返回...
如何把图片以二进制方式存入SQL_Server数据库_并能读取出来
首先是题目 【问题描述】 请编写一个程序,实现如下功能 1、定义结构体student, 包括stu_id,...3、使用write函数,以二进制形式,将a数组中存放的n个学生一次写入out.txt文件中(不要使用循环) 4、使用read函数,...
VC编写的C++读写二进制文件代码,其功能是将一个文件全部写到另一个文件的末尾(如果没有就创建),可以填写的选项有:源文件完整地址,写入次数,目标文件完整地址。格式为:d:/文件名 (注意是左斜杠) 或 d:\\...
一个是读取图片文件的二进制流,按照规定的格式写入一个txt文本文档中,另一个程序是将此文本文档中的内容按照指定格式复制到代码的数组中,最终可生成原图片。特点:第二个程序不需要单独的图片附件,而是将所需...
里面对于Sqlite3数据库2进制数据进行了详细的解析和对于大部分常用Sqlite3的接口函数做了一定的总结。对于2进制数据eg图片的操作有实例源代码提供。
二进制XML存储方案BinXML实现方法 BinXML是我个人杜撰出来的名字,不知道是否合适,也不知道是否已存在类似的解决方案。在vcer.net上我将前一段时间的这个BinXML方案贡献出来,希望能够与广大vcer分享。 当时问题的...
不管什么编码都是二进制的,这样表示为16进制就可以啦。 2.如何读取16进制文件 最近编程用这一问题,网上查了一下,感觉还是自己写吧。 16进制数据一般是:text=0x340xb5…,就是0x开头,之后是两个数字十六进制数。 ...
主要介绍了使用Windows API 函数中的RegOpenKeyEx()函数和RegSetValueEx()函数来实现对注册表某项写入二进制键值,需要的朋友可以参考下
掌握C语言二进制文件读写方式; 掌握CPP文本文件读写方式; 掌握CPP二进制文件读写方式; 二:C语言文本文件读写 1. 文本文件写入 //采用C模式对Txt进行写出 void TxtWrite_Cmode() { //准备数据 int index[50] ;...
该程序使用用户输入的加密密钥,通过凯撒(Caesar)的密码风格加密将二进制数据加密到一个新的数组中,该数组将显示并写入新文件。 “ DeEncrypt.cpp”将加密的数据读取到结构的动态数组中并显示信息。 该程序使用...