如何阅读然后在C ++中编辑文件txt

时间:2013-06-05 23:35:11

标签: c++ fstream

我知道这个问题被问到here 但我找不到我要找的东西。我现在能找到的最佳答案显示了如何在文本文件中添加内容。

我怎样才能使用fstream来读取文本文件中的最后一个数字并读取最后一个字符串?

或者,我怎么能简单地替换文件中的某一行?例如:

该文件将是:

Line 1:NAME

Line 2:4

并且代码将读取第1行,并将其分配给字符串,稍后更改它, 与第二行相同

2 个答案:

答案 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)。