0

みなさん、良い一日を

指定された量の文字が読み取られた後、ドット(またはその他の文字)を挿入したいと思います(私の場合は2です)

だからここに私のコードがあります:

#include <fstream>
#include <string>

using namespace std;

string dot = ".";        //Char to insert
char ch;
unsigned i=0;          //Symbol counter
int counter = 2;       //How much letters to skip before insertion


int main(){

fstream fin("file.txt", fstream::in);

while (fin >> noskipws >> ch) {

  ofstream file;
  file.open ("file2.txt");
  file << ch;
  file.close();
  i++;
       if(i == counter){
       file.open ("file2.txt");
           file << dot;
       file.close();
       i = 0;
       }
    }
 return 0;
}

新しいfile2.txtに書いたのは「0」です。

PS私はC ++の初心者なので、初心者向けに詳しく説明してください(時間があれば)

前もって感謝します。

編集:いくつかの修正を適用した後、出力は "." になります。

EDIT2:自分の投稿に回答することはできません(私はこのフォーラムの初心者であり、回答する前に7時間待たなければならないため)、修正したコードをここに投稿します

修正版:

#include <fstream>
#include <string>

using namespace std;

string dot = ".";        //Char to insert
char ch;
unsigned i = 0;          //Symbol counter
int counter = 2;         //How much letters to skip before insertion


int main(){

ofstream file;
file.open ("file2.txt");
fstream fin("file.txt", fstream::in);

while (fin >> noskipws >> ch) {

  file << ch;
  i++;
       if(i == counter){
           file << dot;
           i = 0;
       }
    }
  file.close();
  fin.close();
 return 0;
}

返信ありがとうございます。

4

4 に答える 4

1

このような単純なアプリケーションの場合、読み取りを開始するに出力ファイルを開き、完了するまで閉じないでください。書かれているように、出力ファイルは文字が読み取られるたびに開かれ、以前にファイルにあったものはすべて上書きされます。ファイルを追加モードで開いて、最後に新しいデータを貼り付けることもできますが、開いたままにしておく方がはるかに簡単 (かつ高速) です。

于 2013-08-27T16:22:59.433 に答える
0

ループ内でファイルに書き込むときは、ループ外でファイルを開きたいと思うでしょう。通常、書き込み用にファイルを開くと、古い内容が上書きされます。

だからこれをしてください:

ofstream file ("file2.txt")
while (...)
{
   ...
   file << ....
   ...
}
于 2013-08-27T16:33:38.663 に答える