【发布时间】:2014-07-01 04:03:48
【问题描述】:
我正在尝试使用 C++ 语言环境,但无法弄清楚为什么输出是 0.05 而不是 4.98。
#include <iostream>
#include <vector>
#include <string>
#include <locale>
using namespace std;
int main(int argc, const char** argv) {
vector<string> locales;
locales.push_back("de_DE");
locales.push_back("en_AU");
locales.push_back("en_GB");
locales.push_back("zh_CN");
long double amount = 4.98;
for (size_t i = 0, s = locales.size(); i < s; ++i) {
if (locales[i] != "C") {
cout.imbue(locale(locales[i].c_str()));
cout << i << " (" << locales[i] << "): ";
const moneypunct<char>& mp = use_facet<moneypunct<char> >(cout.getloc());
const money_put<char>& mv = use_facet<money_put<char> >(cout.getloc());
cout << mp.curr_symbol();
ostreambuf_iterator<char> out(cout);
mv.put(out, false, cout, cout.fill(), amount);
cout << endl;
}
}
return 0;
}
程序的输出如下:
0 (de_DE): Eu0,05
1 (en_AU): $0.05
2 (en_GB): £0.05
3 (zh_CN): ¥0.05
我做错了什么?
【问题讨论】:
-
因为
amount设置为 4.98。
标签: c++ localization internationalization locale