【c++】包含string类的结构体类型二进制文件读入输出

2024-11-28 08:29:35
推荐回答(2个)
回答1:

// 不知道你的 KeyType 是什么类型就把他省掉了。
// 如果用C的话记得把输出语句改成printf;

#include
#include
#include
using namespace std;

struct ElemType{
string content; //内容域
int num;
};

// 无论你结构体里有哪些数据,都可以用下面的代码。

int main(void)
{
struct ElemType sNode;
sNode.num = 100;
sNode.content = "hello world!";
// 写入文件
FILE *pFile = fopen("1.txt", "wb"); // 用二进制打开
int size = sizeof(sNode);
fwrite(&size, sizeof(int), 1, pFile);
fwrite(&sNode, sizeof(sNode), 1, pFile);
fclose(pFile);
// 读取文件
struct ElemType sRnode;
FILE *pRfile = fopen("1.txt", "rb");
fread(&size, sizeof(int), 1, pRfile);
fread(&sRnode, size, 1, pRfile);
fclose(pRfile);

cout << sRnode.content << endl;
cout << sRnode.num << endl;

}

回答2:

结构体内重载>>和<<操作符