2016-07-18 8 views
0

私は私のコンパイラでcoutを使って出力をどのように整列させるかを考えてきました。私はthisのようないくつかの質問に言及しましたが、それは私を助けませんでした。coutアラインメントの代替方法

上記のリンクを、あなたのよう

enter image description here

の下に私の画像リンクに示すように、2のいずれかを使用した後に、それは本当に私の出力を合わせていない、しかし<<right or <<left

を使用してヘルプを提供見ることができます、d13の価格は3桁しかありませんが、他の4個は私のミスアライメントの原因となります

したがって、これは私が価格を調整するために行うものです

cout << "D13" 
    << setw(7) 
    << setfill(' ') 
    << " " 
    << d13p 
    << right 
    << setw(3) 
    << setfill(' ') 
    << " " 

残念ながら、動作しません。芯の位置合わせの代替方法はありますか?

+0

:維持するための最も簡単な方法は、フィールドのすべてのためにそれを使用することです。 –

+1

または出力をコードブロックに貼り付けるだけです。モノスペースなので、スクリーンショットのようにアラインメントの問題が表示されます。 –

+1

'' setw()を使っているなら '' ''なぜ? "あなたが本当に必要と思うのであれば、これらを 'setw()'の前に置いてください。 –

答えて

2

はちょうど正しくsetw()を使用し、代替は必要ありません。受け入れた画像形式でスクリーンショットを作成し、画像をインラインで投稿してください

cout << setfill(' ') // use once 
    // Field 'Durian' 
    << setw(8) 
    << left 
    << "D13" 

    << ' ' // Column spacing 
    // Field 'Price' 
    << setw(5) 
    << right 
    << d13p 

    << ' ' // Column spacing 
    // Field 'Qty' 
    << setw(3) 
    << right 
    << d13qty 

    ... 
2

スペースためsetwマニピュレータを使用しないでください、

ための「列」の間の間隔が自動的になります

std::cout << "D13" << std::right << std::setw(11) << d13p << ...; 

のようなものを設定します。

Simple demo with output in neat columns

+1

OPはそう 'のstd :: coutを、少なくとも1つのスペースを確保したい<< "D13" << '「<<はstd ::右<<はstd :: setw(10)<< ...' –

+0

@MooingDuckそして、十分な幅を設定しても問題ありません。フィールド幅に1を加えれば余分なスペースが確保されます。 –

+0

_ @ JoachimPileborg_ MooingDuckさんのコメントは、保守性のためにポイントを持っている@それが列フィールドとの間のスペースに至るまで、すべてを壊しても意味があります。少なくともパフォーマンスの違いやそれ以外の効率性はありません。 –

関連する問題