在这里提出问题。假设,我想存储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
?
但内容保持不变。请解释。
谢谢。
答案 0 :(得分:4)
文件流保持两个指针,一个是读取,另一个是写入。如果您正在进行读/写操作,则需要使用seeg
和seekp
成员函数明确设置这些指针。您还会发现执行格式化I / O可能会干扰您尝试执行的操作,因此您应该使用get
/ put
和read
/ write
成员而不是功能。
有关使用fstream的开放模式的更多信息,另请参阅Why can't I read and append with std::fstream on Mac OS X?。
答案 1 :(得分:1)
两种可能更有效的解决方案:(i)使用64位操作系统或(ii)使用mmap
。