同时读写文件?

时间:2010-05-09 09:01:43

标签: c++ file file-io

在这里提出问题。假设,我想存储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? 但内容保持不变。请解释。 谢谢。

2 个答案:

答案 0 :(得分:4)

文件流保持两个指针,一个是读取,另一个是写入。如果您正在进行读/写操作,则需要使用seegseekp成员函数明确设置这些指针。您还会发现执行格式化I / O可能会干扰您尝试执行的操作,因此您应该使用get / putread / write成员而不是功能。

有关使用fstream的开放模式的更多信息,另请参阅Why can't I read and append with std::fstream on Mac OS X?

答案 1 :(得分:1)

两种可能更有效的解决方案:(i)使用64位操作系统或(ii)使用mmap

% man mmap