用于读写的 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的主要内容,如果未能解决你的问题,请参考以下文章