【发布时间】:2010-05-09 09:01:43
【问题描述】:
把问题移到这里。假设,我想存储 1,000,000,000 个整数并且无法使用我的内存。我会使用一个文件(它可以轻松处理这么多数据)。
我怎样才能让它同时读取和写入。
首先,使用 fstream file("file.txt', ios::out | ios::in ); 不会创建文件。但是假设文件存在,我无法同时读写。
我的意思是:
设文件内容为111111
然后,如果我运行:-
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
fstream file("file.txt",ios:in|ios::out);
char x;
while( file>>x)
{
file<<'0';
}
return 0;
}
文件的内容现在不应该是 101010 吗?读取一个字符,然后用 0 覆盖下一个字符?或者如果整个内容被一次读入某个缓冲区,文件中是否应该至少有一个 0 ? 1111110 ?
但内容保持不变。请解释。
谢谢。
【问题讨论】:
-
有趣的问题。当我在
file << '0';之前和之后放置file.tellg(); file.tellp();时,我确实得到了101010(在调试输出中意外发现)。这表明程序中有一些未定义的行为? fstream 实现中的错误?