【发布时间】:2020-08-11 06:56:42
【问题描述】:
我想将字符串对象输出到文件并将其取回,但我的代码根本不打印任何内容。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
void main()
{
// open file for binary input/output
fstream binary("data.txt", ios::binary);
// create random string
string str1 = "fgh";
// write down string object to the file
binary.write(reinterpret_cast<char*>(&str1), sizeof(str1));
// create second string
string str2;
// get str1 to str2
binary.read(reinterpret_cast<char*>(&str2), sizeof(str1));
// print second string
cout << str2;
}
【问题讨论】:
-
您不能以这种方式读取或写入 std::string。它必须是 POD 类型。 std::string 是一个带有指针的类。当您以这种方式读写时,您保存的是指针而不是指针指向的数据。
-
请非常小心
reinterpret_cast。通常你不需要它。当你认为你需要它(或它的 C 风格转换等价物)时,你通常会写一个错误。 极少种情况reinterpret_cast实际上是正确的解决方案。 -
查找对象序列化/反序列化。
标签: c++ object binaryfiles fileoutputstream