MFC 文件读写包括字符串的结构体

试过CString char* 写入的都是地址

cpp 复制代码
struct Param{
	int ID;
	int index;
	char val[128];
};

vector<Param>ans;
UINT count = 17;
ans.resize(count);
FILE* fp;
fopen_s(&fp,_T("my.txt"),_T("rb"));
if(count != fread(&ans[0],sizeof(Param),count,fp)){
	AfxMessageBox("1");
}

它不起作用的原因是fwrite向文件写入了一个连续的字节块,然而你的结构体包含指向其他地方的指针,所以你存储的基本上是字符串的地址,而不是字符串本身。

如果你想使用fwrite,你需要让结构体成为一个连续的字节块,也就是说,在你的结构体中使用char [],并且保持固定的大小。

相关推荐
晨曦夜月15 分钟前
头文件与目标文件的关系
linux·开发语言·c++
刃神太酷啦19 分钟前
C++ list 容器全解析:从构造到模拟实现的深度探索----《Hello C++ Wrold!》(16)--(C/C++)
java·c语言·c++·qt·算法·leetcode·list
有点。1 小时前
C++ ⼀级 2023 年09 ⽉
c++
LXS_3571 小时前
Day 16 C++提高之模板
开发语言·c++·笔记·学习方法
wyw00001 小时前
鸿蒙开发-如何将C++侧接收的PixelMap转换成cv::mat格式
c++·华为·harmonyos
liulilittle1 小时前
C++ CRTP 替代虚函数
数据结构·c++·算法
buyue__1 小时前
C++实现数据结构——队列
数据结构·c++
NZT-481 小时前
C++基础笔记(二)队列deque,queue和堆priority_queue
java·c++·笔记
玉树临风ives2 小时前
atcoder ABC436 题解
c++·算法·leetcode·atcoder·信息学奥赛
fpcc2 小时前
C++23中的自定义模块开发
c++·c++23