我在讀取和寫入二進制信息時遇到了一些麻煩。我可以成功地寫一個簡單的字符串到文本文件,在這種情況下,我的文件'output.dat'包含句子「你好,這是一個句子」。使用C++讀取和寫入二進制信息
但是,我無法讀回我的信息。我無法確定問題。我打算改變從二進制文件讀取的信息的每一個字節,以便返回值作爲字符串幫助。
感謝您提供的任何幫助。
#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;
}
上面的代碼有什麼問題?它對我來說工作得很好。你沒有寫任何文件來期望任何東西。 – 2013-03-18 00:24:36
我認爲整個問題是當我重寫我的閱讀功能。我忘了初始化緩衝區的大小。我現在唯一的問題是如何在寫入信息之前向每個字節添加5? – Battleroid 2013-03-18 00:30:49
您的更新代碼泄漏內存。 [**不要在這裏使用指針和'new'](http://klmr.me/slides/modern-cpp/) – 2013-03-18 10:11:28