我正在做的是在主开始时使用fstream打开我的文件,并在最后关闭它。在我写作“Hello World”之间,然后阅读我写的内容,但结果总是被人嘲笑,而不是“Hello World”。我确实做了一个角色,但没有帮助。任何方式我可以做到这一点?同时读取/写入
同时读取/写入
回答
当您从阅读转为写作或反之时,您需要设置一个fseek调用。 (当然,你也需要fopen
为"r+"
之类的,所以读写都是允许的,但我想你是已经知道了 - 寻求在阅读和写作之间切换的需要是一个鲜为人知的事实)。
作为this page所说的那样,
对于模式,其中读取和 写入(或附加)被允许 (那些包括“+”符号),则 流应该被刷新(fflush )或 重新定位(FSEEK,fsetpos,倒带) 任一随后的写入操作的读出操作 或 写入操作之后是 读取操作之间。
fseek和fstream?我不这么认为。这个问题被标记为C++而不是C,所以C++的答案会更合适。 – camh 2010-09-13 04:30:25
@camh,在我的回答中,我从“cplusplus.com”引用了大量的内容:这不是我的错(当然也不是'cplusplus.com'的人;-) C++将(C的一个版本)合并为一个子集,因此这个答案工作得很好(而@麦克的回答指出,用'std :: fstream'做这件事不是那么容易)。如果你认为有更好的方法来做到这一点(使用'std :: fstream'和w/o'fopen'),为什么不把它发布呢? – 2010-09-13 05:04:27
如果我认为你的答案有问题,我会对此做出评论,就像我所做的那样。我不需要张贴我自己的答案参与。你不能混用iostream和stdio,所以你的回答最好是不相关的(stdio与iostreams的问题无关),最坏的情况是错误的。 C++包含C子集并不意味着在纯C++程序中使用该子集是一个好主意。不是异常安全的(除非你编写自己的包装,否则不会自动关闭已打开的文件)足以让我不鼓励在纯C++代码中使用此C子集。 – camh 2010-09-13 07:18:45
我想如果这个工程,逗乐,因为我总是要打开一个文件两次做到这一点:一次读取和一次写。即使那样,我也必须写出整个文件并关闭它(刷新操作系统缓冲区),然后才能确定我能读取整个文件,而不是早期的EOF。
时下,因为我使用Unix风格的操作系统,我只会使用pipe()
函数。不知道这是否可以在Windows中使用(因为很多不如文件上的select()
)。
确保你正在寻找的文件的开头读,像这样前:
fileFStream.seekg(0, ios_base::beg);
如果不工作,发布您的代码。
- 1. Linux - 同时从文件读取/写入
- 2. 同时写入和读取文件
- 3. 同时读取和写入文件?
- 4. WebGL纹理同时读取/写入
- 5. 同时读取和写入python文件
- 6. 同时写入和读取同一文件(磁盘异步?)
- 7. android java从不同的线程同时读取/写入textview
- 8. 在读取超时时写入频道
- 9. 同步串行端口读取/写入
- 10. 如何同步读取/写入流?
- 11. Redis读取/写入
- 12. 同时读写matlab
- 13. Spidev不会使用ioctl同时写入/读取
- 14. node.js读取txt文件,同时写入c
- 15. 无法同时写入和读取到网络流c#
- 16. 重复/同时读取/写入文本文件
- 17. 可以在两个Python程序写入和读取的同时
- 18. Cassandra在EC2上同时读取和写入期间崩溃
- 19. 如何在c#中同时读取/写入文件?
- 20. 如何使用LinkedHashMap同时写入和读取
- 21. 同时读取和写入二进制文件
- 22. Python和C文件同时读取/写入
- 23. 如何在同一时间写入和读取文件
- 24. 同时读取和写入图像处理
- 25. 实现异步写入时的读取
- 26. mongodb读取和写入连接超时
- 27. 的读取和写入超时在JSSC
- 28. 读取/写入文件头
- 29. PIC16F84 - eeprom读取和写入
- 30. C#app.config读取和写入
您是否检查读取操作是否成功?你如何阅读? – 2010-09-13 04:12:53
发布您使用的代码。 – 2010-09-13 04:12:59