嗨,
我刚刚在c ++中完成了以下操作:- 打开-WINDOWS 10
//1. Serialize a number into string then write it to file
std::string filename = "D:\\Hello.txt";
size_t OriNumber = 26;
std::string str;
str.resize(sizeof(size_t));
memcpy(&str[0], reinterpret_cast<const char*>(&OriNumber), str.size());
std::ofstream ofs(filename);
ofs << str << std::endl;
ofs.close();
//2. Now read back the string from file and deserialize it
std::ifstream ifs(filename);
std::string str1{std::istreambuf_iterator<char>(ifs), std::istreambuf_iterator<char>()};
// 3. Expect that the string str1 will not be empty here.
size_t DeserializedNumber = *(reinterpret_cast<const size_t*>(str1.c_str()));
std::cout << DeserializedNumber << std::endl;
在第3步中,即使我用notepad ++打开文件,它也显示了几个字符,我无法从文件中读取字符串。在最后一行,我们仍然打印了DeserializedNumber的值,但这是由于str1.c_str()现在是带有某些垃圾值的有效指针。
调试该程序后,我发现std:ifstream在文件开头将获得值-1(EOF),作为维基百科的解释,26是替代字符的值,有时被视为EOF。
我的问题是:
谢谢