使用C ++编辑txt文件中的特定行

时间:2013-12-05 09:27:21

标签: c++ visual-c++

我有一个文本文件,文本文件中的数据是;

FILE1.TXT

1.0|BWP
1.0|KWK
1.0|RLS
1.0|KPP

我想将第3行编辑为

2.0|RLS

请帮助我如何实现这一目标;

2 个答案:

答案 0 :(得分:1)

假设您有简单的ASCII编码,您可以计算文件中每一行的位置。每行长度为8或9个字符(取决于您使用的行终止符)。将该数字存储在变量len中。所以解决方案就是:

  1. 打开文件
  2. 通过寻找x
  3. 来跳转到第x = 2行(例如x = 0,请注意第一行为x * len
  4. 写下完全 len字节的新行(例如char[len]
  5. 关闭文件,如果您不再需要它。

答案 1 :(得分:1)

免责声明

我希望我不会因为降低SO质量而受到太多抨击。但这对评论来说太长了。

通常,您应该在这里询问可以得到精确答案的问题,和/或解决特定(技术上或多或少的)问题。不是“我一个人呆在黑暗中.Hopp plox。”这就是为什么强烈鼓励人们展示他们所做的尝试。

然而,我觉得OP绝对不知道从哪里开始,并认为标准库中有一些范例或内置支持可以完成他的任务。我相信他们的善意和信任更好地给出一个想法,而不是让他们遇到荒野,只是为了尝试一些有资格提出问题的东西。我想给出一些提示和启动。我希望这是可以接受的,并将帮助他将问题分解为几个具体的问题/问题,这些问题实际上可以得到精确的回答。

回答尝试:

在文本编辑器中没有默认的操作文本文件的方法。当你开始将它分解为你用语言实际做的事情时,这是一个非常重要的任务。

您遇到的问题的一般方法是将文件读入内存并将其作为单独的行存储。此外,您似乎可以解析每一行,并为每一行创建模型。我会从:

开始
class Line{
public:
  Line(const std::string& text_line); // parse an actual line
  Line();
  std::string to_string(); // return textual representation for saving

  void set_value1(float);
  float get_value1();
  void set_value2(const std::string&);
  const std::string& get_value2();
private:
  float value1;
  std::string value2;
};

Document成为Line的集合。而你几乎可以自由地操纵它。我希望这对初学者有好处。您需要弄清楚如何逐行加载文件,以及如何编写ctorto_string(),但如果出现问题,这应该更容易寻求帮助。

如果你认为这是一种矫枉过正的话。也许。但问题可以回答:

  1. 将magic_number设为17
  2. 打开文件
  3. 求(MAGIC_NUMBER)
  4. 写2
  5. 关闭文件
  6. 我希望我得到magic_number ok =)。