[解決済み] 文字の印刷はcout<<よりcout.put()の方がお勧めですか?
質問
背景
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
が設定されていないことが、より決定的かもしれません。
関連
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】'cout'は型名ではない
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] 8192個の要素にループをかけると、プログラムが遅くなるのはなぜですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー