2

これは簡単な質問です。しかし、私はデータをファイルに出力しようとしています。これは正常に機能します。ただし、データが個々の行に出力されるように、適切なポイントに新しい行を実装しようとしています。

これは私のコードが現在どのように見えるかです:

main.cpp

Writer w("Output.txt");
    w.writeString("The number of words in the script are: ");
    w.writeInt(count);
    w.writeEol();
    w.writeString("The number of Officers in the script are: ");
    w.writeInt(ofCount);
    w.writeEol();
    w.writeString("The number of Courtiers in the script are: ");
    w.writeInt(cCount);
        w.close();

Writer.cpp

void Writer::writeEol()
{
    out << "\n" << endl;
}

システム全体がこのように構築されているため、コードはこのように実装する必要があります。

だから私の質問は、出力ファイルに新しい行を追加するためにWriter :: writeEol()をどのように調整するのですか?

私の出力ファイルは現在次のように出力されます。

    The number of words in the script are: 32339The number of Officers in the script are: 2The number of Courtiers in the script are: 9

どんな助けでも大歓迎です。:)

4

2 に答える 2

8

適切な質問がなければ、私はあなたが何を学ぼうとしているのかを推測することができるので、実際の質問であなたの「質問」を更新してください。

エンコーディング(つまり、WindowsまたはUnixの改行)に応じて、基本的に2つの改行をファイルに書き込んでいますが、違いはわかりません。

std::endl改行を作成するための正しい文字が自動的に含まれます。"\n"同様に書く必要はありません。

std::endlまた、特定の位置で改行が本当に必要な場合を除いて、ストリームに渡す必要はありません。

std::cout << "The result is: ";
std::cout << 50 << std::endl;

エディターによっては、すべての改行が表示されない場合があることに注意してください。たとえば、Windowsのメモ帳では。だけの改行は表示されません\n。代わりに、非表示の文字として表示されます。受け入れられる実際の改行については、あなたはうんざりするでしょう\r\n。対照的に、オープンソースエディタのNotepad ++は、両方の種類の改行を受け入れて表示します。

于 2012-11-16T11:44:29.590 に答える
0

このwriteEol()メソッドでは、改行(\n)を出力し、。を書き出しますstd::endl。これらは両方とも、あなたが望むものである改行を書き出す効果があります。ただし、std::endlはストリームもフラッシュしますが、これは望ましくない場合もあります(ストリームがすべての行の後にフラッシュされると、速度が低下する可能性があります)。

あなたのコードはあなたが望むことをするだろうと思います(2つの改行がありますが)が、shutdown87が述べているように、あなた\nは望ましい効果を達成するために各行の終わりに必要なだけです。

于 2012-11-16T11:46:41.113 に答える