前回のコードでは、数値をdoubleで出力していましたが、文字列で出力させることも可能です。実際にお金に関する値を扱うときにfloat/double/long doubleを使うことはあり得ず、かといって十進法ベースの実数型が標準ライブラリにあるわけでもないC++では、stringが唯一money_put/put_moneyでまともに使える型と言えるでしょう。

#include <iostream>
#include <locale>
#include <string>
#include <iomanip>
 
int main()
{
  // en_US.ISO-8859-1相当
  std::locale l("English_United States.1252");
  std::cout.imbue(l);
 
  std::string x = "123456789012345678901234567890.123";
 
  // money_put
  auto const& m = std::use_facet<std::money_put<char>>(l);
  m.put(std::cout, false, std::cout, ' ', x);
  std::cout << std::endl;
 
  // put_money
  std::cout << std::put_money(x, false) << std::endl;
}

2012年3月3日追記:コメント内のen_JPをen_USへ修正。

スポンサード リンク

この記事のカテゴリ

  • ⇒ money_put/put_moneyで扱える型