我认为这应该很简单,但到目前为止我的谷歌搜索没有帮助...我需要用 C++ 写入现有文件,但不一定在文件末尾。
我知道当我只想将文本附加到文件中时,我可以传递标志ios:app
打电话时open
在我的流对象上。但是,这只能让我写入文件的最末尾,而不是写入文件的中间。
我做了一个简短的程序来说明这个问题:
#include <iostream>
#include <fstream>
using namespace std;
int main () {
string path = "../test.csv";
fstream file;
file.open(path); // ios::in and ios::out by default
const int rows = 100;
for (int i = 0; i < rows; i++) {
file << i << "\n";
}
string line;
while (getline(file, line)) {
cout << "line: " << line << endl; // here I would like to append more text to certain rows
}
file.close();
}
您不能在文件中间插入。您必须将旧文件复制到新文件,并在复制到新文件的过程中在中间插入您想要的任何内容。
否则,如果您打算覆盖现有文件中的数据/行,可以使用std::ostream::seekp()
来识别文件中的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)