7

文字列に複数の改行を追加する

new lines複数を文字列に挿入するための、私が使用する 2 つの方法よりも魅力的な構文 (または反復の少ない構文) はあります?


        #1 |   cout << "\n\n\n";
        #2 |   cout << endl << endl << endl;

4

7 に答える 7

15

いいえ、複数のスペース行を追加するための特別な機能はありません。あなたはこれを行うことができます:

std::cout << "\n\n\n\n\n";

またはこれ

for (int i = 0; i < 5; ++i)
  std::cout << "\n";

または独自の実装operator*

std::string operator*(std::string const &s, std::size_t n)
{
  std::string r;
  r.reserve(n * s.size());
  for (std::size_t i = 0; i < n; ++i)
    r += s;
  return r;
}

std::cout << (std::string("\n") * 5);

最後に、推奨される解決策:

std::cout << std::string( 5, '\n' );
于 2013-07-08T09:47:25.190 に答える
8

一度に複数の改行を挿入できる独自のマニピュレータを作成できます。それを呼びましょうmendl(複数 endl):

class mendl
{
public:
    explicit mendl(unsigned int i) : n(i) {}
private:
    unsigned int n;

    template <class charT, class Traits>
    friend basic_ostream<charT,Traits>& operator<< (
                                         basic_ostream<charT,Traits>& os,
                                         const mendl& w)
    {
        // the manipulation: insert end-of-line characters and flush
        for (unsigned int i=0; i<w.n; i++)
            os << '\n';
        os.flush();
        return os;
    }
};

使用法は次のとおりです。

cout << "dfsdf" << mendl(4);
于 2013-07-08T09:54:42.973 に答える
3
while(k--)cout<<"\n"; // k is number of lines you wanted
于 2013-07-08T09:48:01.417 に答える
1

一定量の改行を使用している場合は、定数変数を定義することを検討してください。

例えば、

const char nl5[] = "\n\n\n\n\n";

std::endl のような cout のコンテキストで使用できます。

ここにコード全体があります。. .

#include <iostream>

int main()
{
    using namespace std;
    const char nl5[] = "\n\n\n\n\n";
    cout << "ln1" << nl5 << endl;
    cout << "ln2" << nl5 << endl;
}
于 2013-07-08T10:07:12.050 に答える
0

いいえ、標準ライブラリには I メソッドと O メソッドが含まれていますが、データ ストリームの内容は完全にあなた次第です。

endl は、要求したことの半分を実行します。2回呼び出すと、必要なものが得られます。別の方法として、2 つの改行を出力する endl2x を定義するか、出力する数を定義するパラメーターを取る endl2x を定義することもできます。

于 2013-07-08T09:45:02.963 に答える
-1

出力ストリームを取得し、出力ストリームを返す印刷する新しい行がない関数を作成してみることができます

于 2013-07-08T09:49:45.873 に答える