使用fstream通过write和read二进制方式保存读取string后进行读取出错
因为保存的是string类。保存的是这个类的数据和指向这个类的指针,string的字符串是用new在堆上分配的,string类本身只包含指向字符串的指针,因此没有将字符串保存进文件。但是使用c_str()可以获取这个指针。
应该保存基本的数据类型char而不是string
之前用这个string在结构体中一起保存,程序运行时出现bug,最后发现是这个问题,导致重新改项目源代码70多处,血的教训
⌚Time: 2023-03-14 11:50:43
使用fstream通过write和read二进制方式保存读取string后进行读取出错
因为保存的是string类。保存的是这个类的数据和指向这个类的指针,string的字符串是用new在堆上分配的,string类本身只包含指向字符串的指针,因此没有将字符串保存进文件。但是使用c_str()可以获取这个指针。
应该保存基本的数据类型char而不是string
之前用这个string在结构体中一起保存,程序运行时出现bug,最后发现是这个问题,导致重新改项目源代码70多处,血的教训