1. ホーム
  2. c++

[解決済み] 文字の印刷はcout<<よりcout.put()の方がお勧めですか?

2022-02-27 01:27:06

質問

背景

IIRCより リリース2.0 C++は一文字の定数を型として保存する char であり、NOT int . しかし、その前に リリース2.0 のようなステートメントがあります。

cout<<'A'

は、ASCII 値の 'A' すなわち 65 を表示するため、問題がありました。

char ch='A';
cout<<ch;

は正しい値、つまり'A'を表示します。

で修正されたので、この問題は リリース2.0 . 私が思うに cout.put() に対して持っていた優位性を失いました。 cout<< .


質問

他に推奨する理由はありますか? cout.put() オーバー cout<< を印刷することができますか?

どのように解決するのですか?

とは、いくつかの違いがあります。 cout<<cout.put あるいは、オーバーロードされた << 演算子と put メソッドから std::basic_ostream というのも、これは実際にはグローバルインスタンスに限定されないからです。 cout .

<< 演算子は整形された出力を書き込みます。 put メソッドは使用しません。

は、その << 演算子は、出力に失敗した場合にフェイルビットを設定します。 put メソッドは使用しません。

個人的には << 演算子は、フォーマットされた出力を回避したり、エラー時にフェイルビットを設定しないといった特別なニーズがない限り、ほとんどすべてのケースで使用されます。

これらを使用することで、以下のような出力の違いが生じます。

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    cout << "Character: '" << setw(10) << 'A' << setw(0) << "'" << endl;
    cout << "Character: '" << setw(10);
    cout.put('A');
    cout << setw(0) << "'" << endl;
    return 0;
}

出力します。

Character: '         A'
Character: 'A'

上記を実際にご覧ください。 http://ideone.com/9N0VYn

というのは put メソッドは書式なしなので、マニピュレータのセットを尊重しませんが、それが本当にあなたの意図することである場合があります。しかし、あなたは文字を出力したいだけのようなので、私はむしろ << 演算子で、書式を尊重します。

というケースもあります。 failbit が設定されていないことが、より決定的かもしれません。