0

intをローカルファイルにシリアル化し、メモリに読み込む必要があります。これがコードです

#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
int _tmain ( int argc, _TCHAR* argv[] )
{
    ofstream fileout;
    fileout.open ( "data,txt" );
    fileout << 99999999;
    fileout << 1;
    cout << fileout.tellp() << endl;
    fileout.flush();
    fileout.close();
    ifstream fileint;
    fileint.open ( "data,txt" );
    int i, a;    
    fileint >> i >> a;   //i != 99999999   a!= 1 WHY?
    cout << fileint.tellg() << endl;
    return 0;
}

しかし、それは正しく機能しません。i==99999999またはa==1を取得できません。何が問題なのですか?

4

2 に答える 2

6

問題は、operator <<とがデュアルでoperator >>はないことです。空白で区切られた入力を解析しoperator <<ながら、パディングやデリメータなしで直接出力します。operator >>したがって、出力を正しく読み戻すには、出力内の項目の間に空白の区切り文字を手動で追加する必要があります。また、空白を含むものを出力して、正しく読み戻すことを期待することもできません。

于 2012-12-05T19:49:08.383 に答える
4

多分fileout << 99999999 << ' ' << 1;うまくいくでしょう。

于 2012-12-05T19:48:29.180 に答える