std::string で printf を使用しようとすると、次のような問題が発生する可能性があります。意図した std::string の代わりに一見ランダムな文字列が出力されるなどの予期しない動作value.
これは、printf が C スタイルの文字列を操作する C 関数であるのに対し、std::string は動的に割り当てられたメモリを管理する C オブジェクトであるために発生します。これを修正するには、いくつかのアプローチがあります。
std::cout:
を使用する最も簡単な解決策は、演算子のオーバーロードをサポートする std::cout を使用することです。 std::string、印刷できるようにします直接:
std::cout << "Follow this command: " << myString;
c_str() の使用:
null で終了する C スタイルの文字列を std::string から抽出する必要がある場合は、次のように使用できます。 c_str() メソッド:
printf("Follow this command: %s", myString.c_str());
の使用std::format:
最新の C (C 20 以降) では、文字列をフォーマットするタイプセーフで汎用性の高い方法を提供する std::format を利用できます。
std::cout << "Follow this command: " << std::format("{}", myString);
可変引数テンプレートの使用:
必要な場合出力形式をより詳細に制御するには、可変個引数テンプレートの使用を検討できます。ただし、標準ライブラリには、可変引数テンプレートを使用する printf のような組み込み関数はありません。
Boost.Format の使用:
Boost はヘッダーのみのライブラリを提供しますBoost.Format と呼ばれるもので、可変引数テンプレートを使用して printf のような書式設定を実行する代替方法を提供します。
以上がprintf で std::strings を正しく印刷するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。