2012-03-30 13 views
0
このコードが実行される
class test{ 
    int x; 
    public: 
     //public functions getx() and putx() 
}; 
void main() 
{ 
fstream file; 
test ob; 
file.open("test.txt",ios::in|ios::out); 
file.write((char *)&ob,sizeof(ob)); 
file.close(); 
} 

getx()関数を用いて、1として割り当てられている現在のオブジェクト中のxの値を仮定書き込み機能を使用して、C++であるように、ASCII値1に対応する文字が格納されますテキストファイルではなく、数値1。どのようにこれを解決するには?店舗プライベートメンバーが

+0

:あなたの質問に似て

。 –

+0

数値1を対応するasciiに変換しますか? –

+0

あなたがしていることは、プライベートメンバーを「そのまま」格納しています。もちろん、整数ではなくバイナリ形式の10進表現ではありません。 – leftaroundabout

答えて

0

xにgetx()を割り当てていますか?私はputx(int x)が代入に使用されることを期待しています。いずれにせよ、あなたは

ofstream file; 
... 
file << (int)getx(); 

を使用してファイルにint型書くことができるか、@Oli Charleswothが言ったように、あなたのクラスの内部でこれを行いシリアライズ関数を記述します。あなたのクラスのシリアライズ関数を記述する必要がありますWriting multiple variable types to a text file using ofstream