-1

假设我有一个包含 10 行的文本文件。我想移动到第 5 行,清除它下面的所有内容,然后添加一些新文本。使用 C++ 的流实现这一目标的最紧凑的方法是什么(以防我错过了一些流特性)?

4

2 回答 2

3

在写入第二个文件时读取 N 行,然后将所有新文本写入新文件。

于 2013-07-16T19:00:32.483 回答
2

使用 IOstream 打开文件并将前五行存储在数组中,然后使用数组和您想要的任何其他行重新创建测试文件。这是一个代码示例:

    // reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  const int linesToRead = 5; //How many lines to read before stopping
  string lines [linesToRead];
  int line = 0;
  ifstream myinputfile ("example.txt");
  if (myinputfile.is_open())
  {
    while ( myinputfile.good() && line<=linesToRead )
    {
      if(line<linesToRead)
      { //Stop reading at line 5
        getline (myinputfile,lines[line]);
        cout << lines[line];
      }
      line++;
    }
    myinputfile.close();
  }

  else cout << "Unable to open file"; 

  //Begin creating new file

  const int numberOfNewLines = 7;
  string newlines[numberOfNewLines] = {"These", "are", "some", "of", "the", "new",     "lines"}; //lines to be added after the previous 5
  ofstream myoutputfile ("example.txt");
  if (myoutputfile.is_open())
  {
    for(int i = 0; i<linesToRead; i++){
        myoutputfile << lines[i] << "\n";
    }
    for(int i = 0; i<numberOfNewLines; i++){
        myoutputfile << newlines[i] << "\n";
    }
    myoutputfile.close();
  }
  else cout << "Unable to open file";

  return 0;
}
于 2013-07-16T19:32:48.600 回答