【C/C++】 標準出力への整形出力

C++の標準出力ではprintfも使えるけど、coutも使えるね。
いっつも悩むのが、どっちを使うか?って事で…[E:bearing]
これには多分答えが無いような気がする。
printfだと行単位で任意のフォーマットで表示するのが楽。
coutだと複数行の記述でも(ある程度)見やすく書ける。
って所かなぁ。でもprintfでの複数行の表示はprintf自体を分ければ良いわけやし一長一短かな?

printfは良く使うけどcoutは複雑なんで、整形表示の書式を覚書きしときますか。
coutの書式はfstreamのオブジェクトにも使えるはず。つまりcoutなら標準出力やけど、出力ファイルオブジェクト(ofstrem)であればファイルに出力できると思われ。

何はともあれincludeするヘッダファイルを。

#include <iostream>
#include <iomanip>

変数の内容を出力

cout << 変数

指定の幅で出力

cout << setw(文字幅) << 変数;

指定した幅で頭に0詰めして出力

cout << setw(文字幅) << setfill(‘0’) << 変数;

16進数で表示

cout << hex << 変数;

10進数で表示

cout << dec << 変数;

左詰めで出力

cout << left << 変数;

右詰めで出力

cout << right << 変数;

進数設定と詰め方の設定は内部変数に記録されるようです。
よって、一度でも

cout << hex;

とすると、その後の数値型は16進数で表示されてしまう。10進数に戻すには明示的に

cout << dec;

とする必要がありますね。
右詰め、左詰めも同じ。
ちょっと注意が必要やね。

まぁ、この辺を含めて考えると以外とprintfの方が書きやすかったりする。[E:coldsweats01]
coutのメリットは出力する変数の数が多くなっても記述しやすいって事かなぁ。
printfの場合フォーマットに対する引数が可変数引数で渡されてるからフォーマットから要求される変数の数と引数で指定した変数の数が合わないと不正メモリへのアクセスも発生しやすいし、変数の数を変更するのも手間やったりするし。

とは言え、結論は好みって事かなぁ。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください