gpt4 book ai didi

c++ - 将字符串写入和读取二进制文件 C++

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:51 25 4
gpt4 key购买 nike

我在将字符串写入二进制文件时遇到问题。这是我的代码:

ofstream outfile("myfile.txt", ofstream::binary);
std::string text = "Text";
outfile.write((char*) &text, sizeof (string));
outfile.close();

然后,我尝试阅读它,

char* buffer = (char*) malloc(sizeof(string));
ifstream infile("myfile.txt", ifstream::binary);
infile.read(buffer, sizeof (prueba));
std::string* elem = (string*) buffer;
cout << *elem;
infile.close();

我只是无法让它工作。对不起,我只是绝望了。谢谢!

最佳答案

要将std::string写入二进制文件,需要先保存字符串长度:

std::string str("whatever");
size_t size=str.size();
outfile.write(&size,sizeof(size));
outfile.write(&str[0],size);

要读入它,逆向过程,先调整字符串的大小,这样你就有足够的空间:

std::string str;
size_t size;
infile.read(&size, sizeof(size));
str.resize(size);
infile.read(&str[0], size);

因为字符串的大小是可变的,除非您将该大小放入文件中,否则您将无法正确检索它。您可以依赖保证位于 c 字符串末尾的 '\0' 标记或等效的 string::c_str() 调用,但这不是一个好主意,因为

  1. 你必须通过字符检查空值来读入字符串
  2. std::string 可以合法地包含一个空字节(尽管它确实不应该因为对 c_str() 的调用会造成混淆)。

关于c++ - 将字符串写入和读取二进制文件 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com