ホームページ > バックエンド開発 > C++ > printf で std::strings を正しく印刷するにはどうすればよいですか?

printf で std::strings を正しく印刷するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-26 11:11:11
オリジナル
891 人が閲覧しました

How to Correctly Print std::strings with printf?

std::string で printf を使用する方法

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート