-1

10 行を含むテキスト ファイルがあるとします。5 行目に移動し、その下のすべてをクリアして、その後に新しいテキストをいくつか追加します。ストリームの C++ を使用してこれを実現する最もコンパクトな方法は何ですか?

4

2 に答える 2

2

IOstream を使用してファイルを開き、最初の 5 行を配列に保存し、その配列と必要なその他の行を使用してテスト ファイルを再作成します。コード例を次に示します。

    // 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 に答える