同时读/写

时间:2010-09-13 04:11:21

标签: c++

我正在做的是在主要开始时使用fstream打开我的文件并在结束时关闭它。在这之间,我正在写“Hello World”,之后阅读我写的内容但结果始终是weired charecters而不是“Hello World”。我确实做了一个角色演员,但没有帮助。我能以任何方式做到这一点吗?

3 个答案:

答案 0 :(得分:2)

当您从阅读切换到写作时,您需要设置fseek来电,或者反之亦然。 (当然,您还需要fopen "r+"之类的内容,以便允许阅读和写作,但我想您 已经意识到这一点 - 为了在阅读和写作之间切换而寻求的需要是一个鲜为人知的事实。)

正如this page所说,

  

对于读取和读取的模式   允许写作(或附加)   (包含“+”符号的那些),   流应该刷新(fflush)或   重新定位(fseek,fsetpos,倒带)   两者之间的阅读操作   然后是写作操作或   写作操作后跟着   阅读操作。

答案 1 :(得分:1)

如果这样可行,我会很开心,因为我总是要打开一个文件两次才能做到这一点:一次用于阅读,一次用于写入。即便如此,我还是要把整个文件写出来并关闭它(刷新操作系统缓冲区),然后才能确定我能读完整个文件并且没有得到早期的EOF。

如今,由于我使用的是Unix风格的操作系统,我只想使用pipe()函数。不确定它是否适用于Windows(因为很多不适用于文件上的select())。

答案 2 :(得分:1)

确保在阅读之前寻找文件的开头,如下所示:

fileFStream.seekg(0, ios_base::beg);

如果这不起作用,请发布您的代码。