0

特定の変更を加えて、あるファイルから別のファイルにテキストをコピーしています。

input.txt、tmp.txt、output.txtがあります。

アイデアは、数行をtmp.txtにコピーし(区切り文字に到達するまで)、テキストをtmp.txtからoutput.txtに移動し、tmp.txtをワイプしてから、入力の最後に到達するまでサイクルを続行することです。 TXT。

tmp.txtファイルに問題があります。初めてコンテンツをコピーした後、書き込み用にファイルを閉じて削除し、再度開いた後でも、新しいテキストの受け入れが停止します。私のコードは本当に乱雑になりました。

誰かがこれを行うためのきちんとした方法を提案できますか?(tmp.txtにコピーし、tmp.txtからコピーし、tmp.txtをワイプしてサイクルを続行します)

Nbこれは、宿題の問題で立ち往生しているサブタスクです。テキストファイルからc++コメントを削除しています。

編集:なぜtmp.txtが必要なのか疑問に思っている人のために:プログラムが*/オープンコメントなしで(クローズコメント)に遭遇した場合、前のコメントまで、それ以前のすべてをコメントとして扱う必要があります。コメントである場合とそうでない場合があるテキストを保持するために一時を使用しています。そうである場合は、tmp内のテキストを削除します。そうでない場合は、tmp内のテキストをoutput.txtにコピーします。

4

4 に答える 4

2

input.txt を istream として開き、output.txt を ostream として開きます。コメントに属さないすべての文字をエコーする入力から読み取りを開始します。コメントに遭遇した場合、出力に書き込まないでください。それはそれを行う必要があります。

于 2009-06-22T18:01:55.470 に答える
1

C ++ fstreamのものを使用している場合、エラーフラグ(EOFを押したときに設定されたものなど)をクリアするために、ストリームを再度開いたときに.clear()を呼び出す必要がある場合があります。

于 2009-06-22T17:54:59.443 に答える
1

tmp.txtファイルをスキップすることをお勧めします。input.txtを開き、必要に応じてデータをoutput.txtにシャッフルするだけで十分です。

于 2009-06-22T17:57:55.773 に答える
0

実際にコメントを削除することが宿題の一部でない限り、簡単なスクリプトを作成することをお勧めします。これはスクリプトへの参照sedです。

宿題にコメントの削除が含まれる場合は、入力ファイルをストリームとして実行し、コメント中に出力ファイルの書き込みを停止することができます。

  • コメントの 検出から始めることができますstartend
    • C スタイルのコメントと//、C++ スタイルに対してこれを実装します。
  • 次に、スタックを使用してスケールアップし、ネストされたコメントを検出します
    • ここでは、両方のコメント スタイルでのネストの理解が役立ちます。
  • #if 0最後に、およびブロックを検出できます#endif-キックのためだけに:-)
于 2009-06-22T18:00:44.940 に答える