我開發了一個C++應用程序,用於在隨機訪問文件上讀取和寫入數據。 (我使用Visual C++ 2010)閱讀隨機訪問文件
這裏是我的程序:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class A
{
public :
int a;
string b;
A(int num , string text)
{
a = num;
b = text;
}
};
int main()
{
A myA(1,"Hello");
A myA2(2,"test");
cout << "Num: " << myA.a<<endl<<"Text: "<<myA.b<<endl;
wofstream output; //I used wfstream , becuase I need to wite a unicode file
output.open("12542.dat" , ios::binary);
if(! output.fail())
{
output.write((wchar_t *) &myA , sizeof(myA));
cout << "writing done\n";
output.close();
}
else
{
cout << "writing failed\n";
}
wifstream input;
input.open("12542.dat" , ios::binary);
if(! input.fail())
{
input.read((wchar_t *) &myA2 , sizeof(myA2));
cout << "Num2: " << myA2.a<<endl<<"Text2: "<<myA2.b<<endl;
cout << "reading done\n";
}
else
{
cout << "reading failed\n";
}
cin.get();
}
和輸出是:
Num: 1
Text: Hello
writing done
Num2: 1
Text2: test
reading done
但我希望Text2: Hello
。 有什麼問題?
順便說一句,我如何在我的課程內(在一個函數中)output.write
?
感謝
您不能讀寫非字節流中的非POD結構。你的'A'包含一個不是POD的'std :: string',因此'A'不是POD。另外,讀取可能會失敗。 –
我忘了在這裏寫下我的preprosecor命令......編輯的問題。 – Arashdn
@Seth Carnegie,我能做些什麼來在文件中寫字符串? – Arashdn