`
xiaodongdong
  • 浏览: 81318 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

 C++将对象写入二进制文件  

阅读更多

 最近在学习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++等编程语言中实现“将结构体写入二进制文件”以及“从二进制文件中读取结构体数据”。 一、结构体与二进制文件 结构体是由多个不同类型的成员组成的复合数据类型,它可以包含整型、...

    C++,java读写二进制文件方法介绍.pdf

    C++,java读写二进制文件方法介绍.pdf java从第九页开始

    C++文件转二进制,二进制转文件

    在C++编程中,将文件转换为二进制和从二进制还原文件是一项常见的任务,特别是在处理图像、音频、视频和其他数据时。这个过程涉及到读取文件内容并将其存储为二进制数据,以及从二进制数据中恢复原始文件。在VS2010...

    C++,java读写二进制文件方法介绍.docx

    "C++,java读写二进制文件方法介绍" 以下是从给定的文件中生成的知识点: C++读写二进制文件 * 在C++中,读写二进制文件需要包含 `&lt;fstream&gt;` 头文件。 * 使用 `fstream` 类可以对文件进行读写操作。 * 打开文件有...

    c++操作二进制文件详解

    - 写入二进制文件时,使用`endl`会写入一个换行符,但二进制模式下,`endl`不会执行平台相关的换行操作,因此可能导致字节数的差异。 4. **二进制文件的常见用途** - 存储结构化数据,如数组、结构体或自定义对象...

    c++二进制文件查看器

    在写入二进制文件时,同样需要设置二进制模式,并使用`outputFile.write()`将数据写入文件。例如: ```cpp std::ofstream outputFile("newBinaryFile.bin", std::ios::binary); outputFile.write((char*)&value, ...

    将二进制文件转换为16进制

    4. 保存为文本文件:如果需要保存转换结果,可以创建一个`ofstream`对象,然后将十六进制字符串写入。 5. 关闭文件:确保在操作完成后关闭输入和输出文件。 在描述中提到的"ReadBinaryFile"可能是一个实现这个功能...

    把二进制文件中的数据读出,并写入到一个txt文件中去

    本文将详细阐述如何将二进制文件中的数据读取并写入到一个TXT文件中。首先,我们要理解二进制文件与文本文件的区别。二进制文件以原始字节流的形式存储数据,而文本文件则通常包含可读的字符序列。 要实现这个操作...

    C++二进制文件读写

    C/C++实现简单的二进制文件读取和写入示例 1.包含如何读取和写入数字,以及用缓存按字节读取 2.采用标准输入和输出函数创建、打开、关闭文本文件或二进制文件

    二进制文件

    - 写入二进制文件时,要按照特定的格式将数据写入,确保数据的完整性和一致性。 在处理二进制文件时,可能会遇到的问题: - 文件损坏:由于传输、存储过程中的错误可能导致二进制文件无法正常打开或运行。 - 兼容性...

    读取二进制文件读取二进制文件

    ### 读取二进制文件的关键知识点 ...通过以上介绍,我们可以看到如何在C++中有效地读取和写入二进制文件,并且使用结构体和向量等工具来进行数据管理和操作。这对于处理复杂的数据格式非常有帮助。

    二进制文件的读取与写入

    - **C++**:使用`ofstream`对象和`write()`函数将数据写入二进制文件。例如: ```cpp ofstream file("filename.bin", ios::binary); file.write(buffer, buffer_size); ``` `buffer`是你要写入的数据,`buffer...

    C++中文件以二进制形式和以文本形式打开的区别

    本文将深入探讨这一主题,帮助读者理解二进制文件和文本文件在C++中的本质差异,以及如何正确地在不同情境下选择合适的文件操作方式。 ### 一、基本概念 #### 文本文件 文本文件由一系列字符组成,这些字符通常以...

    二进制文件的合并

    在C++中,我们可以使用fstream库来读取和写入二进制文件。 要合并两个具有相同结构的二进制文件,我们需要进行以下步骤: 1. 打开源文件:首先,我们需要打开包含原始数据的二进制文件。在C++中,可以使用`std::...

    读取写入二进制数据

    本文将深入探讨如何读取和写入二进制文件,这是任何编程语言中的基本操作,特别是在处理结构化数据时。我们将以“读取二进制文件,解析字符串,然后写入二进制数据”为主题,以Python语言为例,详细阐述这一过程。 ...

    c++读取二进制文件

    本篇文章将详细探讨如何使用C++中的`read`和`write`函数来读取和写入二进制文件。 首先,`read`和`write`函数是C++标准库中`fstream`的一部分,它们位于`&lt;fstream&gt;`头文件中。这两个函数允许我们对文件进行低级别的...

    结构体序列化读写二进制文件类

    在本例中,它涉及将结构体实例转换为二进制流,以便保存到文件。这样做的好处在于,二进制格式通常占用更少的存储空间,并且可以更快地读取和写入。 二进制文件与文本文件不同,它不使用人类可读的字符编码,而是...

    处理二进制文件源代码

    写入二进制文件与读取类似,只是操作方向相反。我们同样以二进制模式打开文件,然后将字节数据写入: ```python data_to_write = b'\x01\x02\x03\x04' # 假设我们要写入4个字节的数据 with open('output.bin', 'wb'...

    二进制文件读写器

    这个工具主要用于读取和写入二进制文件,而非常见的文本文件。二进制文件通常包含非文本数据,如图像、音频、视频等,或者是结构化的数据文件,如数据库文件、程序的可执行文件等。对于新手来说,理解和掌握二进制...

    二进制文件转换文本文件

    二进制文件的读取通常涉及到低级别的I/O操作,这可能包括使用C++的`ifstream`类或者Python的`open()`函数,设置以二进制模式('rb')打开文件。二进制文件的内容可能不易理解,因为它们不是按照字符顺序排列的,而是...

Global site tag (gtag.js) - Google Analytics