1. ホーム
  2. c++

c++: カンマを使った数値の書式設定?

2023-10-02 19:40:17

質問

整数を受け取り、それを返すメソッドを書きたい。 std::string を返すメソッドを書きたい。

宣言の例です。

std::string FormatWithCommas(long value);

使用例です。

std::string result = FormatWithCommas(7800);
std::string result2 = FormatWithCommas(5100100);
std::string result3 = FormatWithCommas(201234567890);
// result = "7,800"
// result2 = "5,100,100"
// result3 = "201,234,567,890"

として数値をフォーマットするC++の方法は何ですか? string のようにカンマで囲む方法はありますか?

(ボーナスとして double も扱えるようになります)

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

使用方法 std::locale std::stringstream

#include <iomanip>
#include <locale>

template<class T>
std::string FormatWithCommas(T value)
{
    std::stringstream ss;
    ss.imbue(std::locale(""));
    ss << std::fixed << value;
    return ss.str();
}

免責事項です。 ポータビリティが問題になるかもしれません。 "" が渡されたときにどのロケールが使われるかを調べる必要があるでしょう。