我知道这里有人问过这个问题, 但我没有找到我要找的东西。我目前能找到的最佳答案显示了如何向文本文件添加内容。
我如何使用 fstream 来读取文本文件中的最后一个数字并读取最后一个字符串?
或者,我怎么能简单地替换文件中的某一行?例如:
该文件将是:
Line 1:NAME
Line 2:4
并且代码将读取第 1 行,并将其分配给一个字符串,然后更改它,与第二行相同
将文件视为存储在磁盘上的向量。如果您想在该文件中插入某些内容,则必须将所有内容移到该文件中,以便为新行腾出空间。同样,找到一行也没有什么魔法,无需逐行遍历文件并为您的平台找到结束行字符。
在大多数代码中,处理此类事情的方式是将整个文件加载到内存中,然后在那里进行修改,然后将整个文件写回。
如果您确切知道每行有多少个字段以及多少行,这将帮助您创建一个 while 循环,将字段分配给向量或数组并相应地提取值。然后按照 Joel 的建议,打开文件以写入并用新数据替换内容。
代码:
#include <fstream>
#include <vector>
#include <string.h> //or <string> depending on you IDE, i use Xcode
using namespace std;
int main () {
vector <string> a;
vector <string> b;
string field1;
string field2;
ifstream data;
data.open("data.txt");
if (data.fail()) {
cerr << "Error Opening File!" <<endl;
exit(1);
}
while (data >> field1 >> field2) {
a.push_back(field1);
b.push_back(field2);
}
data.close();
return 0;
}
这就是你读入它的方式,向量 a 保存字段 1,向量 b 保存字段 2,这意味着下一个索引“1”将保存下一行值 (line2)。