fstream运算符的错误<< &安培;运营商>>?

时间:2012-12-05 19:42:47

标签: c++

我需要将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。这有什么问题?

2 个答案:

答案 0 :(得分:6)

问题是operator <<operator >>不是双重的 - operator <<直接输出内容而没有填充或分隔符,而operator >>解析空白分隔的输入。因此,您需要在输出中的事物之间手动添加空白分隔符,以使其正确读回。您也无法输出包含空格的内容,并希望能够正确读回它们。

答案 1 :(得分:4)

也许fileout << 99999999 << ' ' << 1;可行。