【问题标题】:C++ append to second line of fileC++ 追加到文件的第二行
【发布时间】:2015-11-22 05:07:00
【问题描述】:

我想在一个简单的 csv 文件的第二行附加条目。第一行包含我的列标题,最新条目必须位于顶部。
我的想法是读第一行直到'\ n',然后移到下一行并在那里写,但我不知道这是否是最有效的解决方案。有人可以举个例子吗?

【问题讨论】:

  • 我来了。编辑实际上是一个有用的问题。
  • 我会看看这个问题stackoverflow.com/questions/9033060/…
  • 这个文件应该有多大?如果这是某种日志,它们通常会在最后增长,因为这是一种更有效的操作。
  • 可能不超过 64 个字符/行且不超过 30 个条目。
  • 在末尾追加可能更有意义,而不是不断将旧数据向下移动并提供仅显示文件尾部的视图。

标签: c++ csv text io


【解决方案1】:

既然您在 cmets 中声明此文件不会很大,我建议您将标题读入某种容器中。然后在标题之后插入需要插入文件的最新数据。然后读入文件的其余部分。完成此操作后,您可以将容器的内容写回文件中。这是一个简单的演示:

std::ifstream fin("somefilename");
std::vector<std::string> file;
file.reserve(30); // grow the capacity to save on allocations
std::string reader;

std::string new_data = "some new data";
getline(fin, reader);
file.push_back(reader);  //add header
file.push_back(new_data);  // add new line

while(getline(fin, reader))  // get rest of file
    file.push_back(reader);

std::ofstream fout("somefilename");
for (const auto & e : file)
    fout << e << "\n";

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2014-04-11
    • 2014-06-16
    • 2017-03-08
    • 2015-08-12
    • 2012-04-06
    • 2013-10-26
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多