用于读写的 fstream

Posted

技术标签:

【中文标题】用于读写的 fstream【英文标题】:fstream for reading and writing 【发布时间】:2013-08-09 17:19:53 【问题描述】:

在 test.txt 文件中,我有一个单词“aa”。我想用“aa1”替换它。但是,下面的程序不会更改文件。怎么了?

#include <string>
#include<iostream>
#include<fstream>
using namespace std;

int main()

    fstream iofile("test.txt",ios_base::in|ios_base::app);
    if (!iofile)
            cerr << "Unable to open file!";

    string word;
    iofile >> word;
    word.push_back('1');
    iofile.seekg(0);
    iofile << word;  

【问题讨论】:

【参考方案1】:

您意识到ios_base::app 会导致您追加到文件的末尾,无论您尝试在哪里寻找写入,对吧?也许您的意思是指定ios_base::out

另外,对于写入,它是 seekp() 而不是 seekg()

【讨论】:

谢谢。用 ios_base::out 替换 ios_base::app 解决了这个问题。它适用于 seekp() 和 seekg() @GrzegorzWilanowski 在那个有限的例子中,它可能只适用于seekg(),因为无论如何 put 指针仍然位于 0,并且更新 get 指针不会改变它......尝试做与您正在编写的字符串不在偏移量 0 处(或紧随您上次编写的任何内容之后)相同的地方...

以上是关于用于读写的 fstream的主要内容,如果未能解决你的问题,请参考以下文章

用于读写的 fstream

用于多进程读写的Java文件锁[重复]

#Python 文件的读写

C++怎么把文件按照16进制进行读写?

如何用C语言读写文件

读写锁