ホームページ > バックエンド開発 > C++ > C で std::locale と std::stringstream を使用して数値をカンマでフォーマットするにはどうすればよいですか?

C で std::locale と std::stringstream を使用して数値をカンマでフォーマットするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-29 18:13:03
オリジナル
319 人が閲覧しました

How can I format numbers with commas in C   using std::locale and std::stringstream?

C でのカンマを使用した数値の書式設定 : 包括的なソリューション

C では、カンマを使用して数値を書式設定することは、可読性を向上させる一般的なタスクであり、数値の明確さ。この記事では、std::locale と std::stringstream の組み合わせを使用してこれを実現する堅牢な方法を紹介します。

解決策

私たちのソリューションの中核は次のとおりです。 std::locale を利用してローカライズされた書式設定コンテキストを確立し、std::stringstream を利用して書式設定された結果をキャプチャします。一般的な数値型 T を受け取る FormatWithCommas テンプレート メソッドは、次の手順に従います。

  1. ss という名前の std::stringstream オブジェクトを作成します。
  2. imbue を呼び出して ss のロケールを設定します。 (std::locale(""))。これにより、デフォルトのシステム ロケールが使用され、通常はロケールに適した数値書式設定ルールが提供されます。
  3. 演算子を使用して数値値を ss に挿入します。 std::fixed を使用して固定精度を指定します。
  4. ss で str() を呼び出して、書式設定された値の文字列表現を返します。

FormatWithCommas メソッドの完全なコードは次のとおりです。 :
<code class="cpp">template<class T>
std::string FormatWithCommas(T value)
{
    std::stringstream ss;
    ss.imbue(std::locale(""));
    ss << std::fixed << value;
    return ss.str();
}
ログイン後にコピー

使用例

このメソッドの使用は簡単です。例:
<code class="cpp">std::string result1 = FormatWithCommas(7800);
std::string result2 = FormatWithCommas(5100100);
std::string result3 = FormatWithCommas(201234567890);
// Outputs:
// result1 = "7,800"
// result2 = "5,100,100"
// result3 = "201,234,567,890"
ログイン後にコピー

Double の処理

提供されたメソッドは、Double も処理するように簡単に変更できます。テンプレート宣言の T を double に置き換えるだけです:
<code class="cpp">template<>
std::string FormatWithCommas(double value)
{
    std::stringstream ss;
    ss.imbue(std::locale(""));
    ss << std::fixed << value;
    return ss.str();
}</code>
ログイン後にコピー

移植性に関する考慮事項

ロケールを指定するための "" の使用は完全には機能しない可能性があることに注意してください。異なるシステム間で移植可能。一貫した動作を確保するには、目的のロケールを明示的に指定することを検討してください。

以上がC で std::locale と std::stringstream を使用して数値をカンマでフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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