我一直试图使我的程序使用Ofstream :: write()将字符串写入二进制文件,但是我无法找到方法(通过网络),所以我尝试将带有字符串的结构写入文件。那很好。我可以打开文件并用我的眼睛读取字符串,但是当我尝试使用Ifstream :: read()读取结构时,我只有一个空字符串和我编写的字符串(在这种情况下, “ dir”为空,“ fileName”已正确读取)。
任何和所有帮助表示赞赏:)
PS:两个字符串都保存在文件中...
这是我的编写代码:

StringStruct texPath;
texPath.dir = "src/Assets/";
texPath.fileName = "bricks_top.png";
file.write((char*)&texPath, sizeof(texPath));


这是我的阅读代码:

StringStruct texFile;
file.read((char*)&texFile, sizeof(texFile));
std::string filepath = "";
filepath += texFile.dir;
filepath += texFile.fileName;
std::cout << filepath;


这是“ StringStruct”代码:

struct StringStruct {
    std::string dir = "src/Assets/";
    std::string fileName = "Example.png";
};

最佳答案

好的,我收到了一些评论(感谢manni 66),说我必须以c字符串形式编写。所以我将结构更改为:

struct StringStruct {
    char* dir = "src/Assets/";
    char* fileName = "Example.png";
};

这样我就将每个字符串写为c字符串。

10-07 22:52