最近在学习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 java从第九页开始
在C++编程中,将文件转换为二进制和从二进制还原文件是一项常见的任务,特别是在处理图像、音频、视频和其他数据时。这个过程涉及到读取文件内容并将其存储为二进制数据,以及从二进制数据中恢复原始文件。在VS2010...
"C++,java读写二进制文件方法介绍" 以下是从给定的文件中生成的知识点: C++读写二进制文件 * 在C++中,读写二进制文件需要包含 `<fstream>` 头文件。 * 使用 `fstream` 类可以对文件进行读写操作。 * 打开文件有...
- 写入二进制文件时,使用`endl`会写入一个换行符,但二进制模式下,`endl`不会执行平台相关的换行操作,因此可能导致字节数的差异。 4. **二进制文件的常见用途** - 存储结构化数据,如数组、结构体或自定义对象...
在写入二进制文件时,同样需要设置二进制模式,并使用`outputFile.write()`将数据写入文件。例如: ```cpp std::ofstream outputFile("newBinaryFile.bin", std::ios::binary); outputFile.write((char*)&value, ...
4. 保存为文本文件:如果需要保存转换结果,可以创建一个`ofstream`对象,然后将十六进制字符串写入。 5. 关闭文件:确保在操作完成后关闭输入和输出文件。 在描述中提到的"ReadBinaryFile"可能是一个实现这个功能...
本文将详细阐述如何将二进制文件中的数据读取并写入到一个TXT文件中。首先,我们要理解二进制文件与文本文件的区别。二进制文件以原始字节流的形式存储数据,而文本文件则通常包含可读的字符序列。 要实现这个操作...
C/C++实现简单的二进制文件读取和写入示例 1.包含如何读取和写入数字,以及用缓存按字节读取 2.采用标准输入和输出函数创建、打开、关闭文本文件或二进制文件
- 写入二进制文件时,要按照特定的格式将数据写入,确保数据的完整性和一致性。 在处理二进制文件时,可能会遇到的问题: - 文件损坏:由于传输、存储过程中的错误可能导致二进制文件无法正常打开或运行。 - 兼容性...
### 读取二进制文件的关键知识点 ...通过以上介绍,我们可以看到如何在C++中有效地读取和写入二进制文件,并且使用结构体和向量等工具来进行数据管理和操作。这对于处理复杂的数据格式非常有帮助。
- **C++**:使用`ofstream`对象和`write()`函数将数据写入二进制文件。例如: ```cpp ofstream file("filename.bin", ios::binary); file.write(buffer, buffer_size); ``` `buffer`是你要写入的数据,`buffer...
本文将深入探讨这一主题,帮助读者理解二进制文件和文本文件在C++中的本质差异,以及如何正确地在不同情境下选择合适的文件操作方式。 ### 一、基本概念 #### 文本文件 文本文件由一系列字符组成,这些字符通常以...
在C++中,我们可以使用fstream库来读取和写入二进制文件。 要合并两个具有相同结构的二进制文件,我们需要进行以下步骤: 1. 打开源文件:首先,我们需要打开包含原始数据的二进制文件。在C++中,可以使用`std::...
本文将深入探讨如何读取和写入二进制文件,这是任何编程语言中的基本操作,特别是在处理结构化数据时。我们将以“读取二进制文件,解析字符串,然后写入二进制数据”为主题,以Python语言为例,详细阐述这一过程。 ...
本篇文章将详细探讨如何使用C++中的`read`和`write`函数来读取和写入二进制文件。 首先,`read`和`write`函数是C++标准库中`fstream`的一部分,它们位于`<fstream>`头文件中。这两个函数允许我们对文件进行低级别的...
在本例中,它涉及将结构体实例转换为二进制流,以便保存到文件。这样做的好处在于,二进制格式通常占用更少的存储空间,并且可以更快地读取和写入。 二进制文件与文本文件不同,它不使用人类可读的字符编码,而是...
写入二进制文件与读取类似,只是操作方向相反。我们同样以二进制模式打开文件,然后将字节数据写入: ```python data_to_write = b'\x01\x02\x03\x04' # 假设我们要写入4个字节的数据 with open('output.bin', 'wb'...
这个工具主要用于读取和写入二进制文件,而非常见的文本文件。二进制文件通常包含非文本数据,如图像、音频、视频等,或者是结构化的数据文件,如数据库文件、程序的可执行文件等。对于新手来说,理解和掌握二进制...
二进制文件的读取通常涉及到低级别的I/O操作,这可能包括使用C++的`ifstream`类或者Python的`open()`函数,设置以二进制模式('rb')打开文件。二进制文件的内容可能不易理解,因为它们不是按照字符顺序排列的,而是...