我知道这个问题被问到here 但我找不到我要找的东西。我现在能找到的最佳答案显示了如何在文本文件中添加内容。
我怎样才能使用fstream来读取文本文件中的最后一个数字并读取最后一个字符串?
或者,我怎么能简单地替换文件中的某一行?例如:
该文件将是:
Line 1:NAME
Line 2:4
并且代码将读取第1行,并将其分配给字符串,稍后更改它, 与第二行相同
答案 0 :(得分:1)
将文件视为存储在磁盘上的向量。如果要在该文件中插入内容,则必须将所有内容移动到该文件中,以便为新行腾出空间。同样地,找到一条线是没有魔力的,没有逐行浏览文件并找到平台的终点线字符。
在大多数代码中,处理这种类型的事情的方法是将整个文件加载到内存中,然后在那里进行修改,然后将整个文件写回来。
答案 1 :(得分:0)
如果你确切知道每行有多少个字段,以及有多少行,这将有助于你创建一个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 hold field1,向量b包含field2,这意味着下一个索引“1”将保存下一行值(line2)。