gpt4 book ai didi

c++ - 用C++读写二进制信息

转载 作者:行者123 更新时间:2023-11-28 00:48:02 25 4
gpt4 key购买 nike

我在读写二进制信息时遇到了一些问题。我可以成功地将一个简单的字符串写入文本文件,在这种情况下,我的文件“output.dat”包含句子“你好,这是一个句子”。

但是,我无法读回我的信息。我无法确定问题所在。我打算稍后更改从二进制文件中读取的信息的每个字节,因此将值作为字符串返回会有所帮助。

感谢您提供的任何帮助。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void write(const string &input) {
fstream output("output.dat", ios::out | ios::binary);
if (output.is_open()) {
output.write(input.c_str(), input.size());
output.close();
}
}

string read(const string &fname) {
int size;
char* buffer;
fstream input(fname, ios::in | ios::binary);
if (input.is_open()) {
input.seekg(0, ios::end);
size = input.tellg();
input.seekg(0, ios::beg);
buffer = new char[size];
input.read(buffer, size);
input.close();
}
string result(buffer);
return result;
}

int main () {
cout << read("output.dat") << endl;

system("pause");

return 0;
}

最佳答案

错误在这里。

char* buffer;
input.read(buffer, size);

您正在读取 buffer 指向的内存。

但是它指向哪里呢?指针 buffer 从未被初始化。

如果您知道自己需要多少空间,那么这样的方法就会奏效。

std::vector<char> buffer(size);
input.read(&buffer.front(), size);

关于c++ - 用C++读写二进制信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467667/

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