我在读取和写入二进制信息时遇到了一些问题。我可以成功地将一个简单的字符串写入文本文件,在这种情况下,我的文件 '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;
}