重複の可能性:
c++ での整数からのカンマの挿入と削除
現在のロケールのように小数点記号を使用して double 値を書き込みたいのですが、現在のロケールのグループ化文字でグループ化したくありません。との現在のアプローチ
stringstream s;
s.imbue(std::locale(""));
問題の 1 つだけを解決します。現在の出力は、必要な 1234.567 ではなく、1,234.567 のようなものです。
どうすればこれを変更できますか?
重複の可能性:
c++ での整数からのカンマの挿入と削除
現在のロケールのように小数点記号を使用して double 値を書き込みたいのですが、現在のロケールのグループ化文字でグループ化したくありません。との現在のアプローチ
stringstream s;
s.imbue(std::locale(""));
問題の 1 つだけを解決します。現在の出力は、必要な 1234.567 ではなく、1,234.567 のようなものです。
どうすればこれを変更できますか?
dirkgently の投稿の整数からのコンマの挿入と削除の助けを借りて、次のクラスを作成しました。
class no_grouping : public std::numpunct_byname<char> {
std::string do_grouping() const { return ""; }
public:
no_grouping() : numpunct_byname("") {}
};
ここで重要なのは、numpunkct_byname から派生させ、ローカル ロケールのコンストラクター パラメーター "" で初期化することです。
次に、ストリームに次のコードを簡単に埋め込むことができます。
ostringstream stringBuff;
std::locale locale(std::locale(""),new no_grouping);
stringBuff.imbue(locale);
これによりグループ化が削除されますが、ローカル ロケールから小数点記号が使用されます。