我希望在使用 iostream
时,将 pi 表示为 3,141592
而不是 3.141592
,因为在许多欧洲国家中使用逗号更为常见。我该如何实现这一点?换句话说
cout << 3.141592;
应该打印。
3,141592
输出到标准输出。
我希望在使用 iostream
时,将 pi 表示为 3,141592
而不是 3.141592
,因为在许多欧洲国家中使用逗号更为常见。我该如何实现这一点?换句话说
cout << 3.141592;
3,141592
输出到标准输出。
basic_ios :: imbue
来设置首选语言环境。#include <iostream>
#include <locale>
template <class charT, charT sep>
class punct_facet: public std::numpunct<charT> {
protected:
charT do_decimal_point() const { return sep; }
};
int main(int argc, char **argv) {
std::cout.imbue(std::locale(std::cout.getloc(), new punct_facet<char, ','>));
std::cout << "My age is " << 3.1415 << " lightyears.\n";
}
cout.getloc()
我只覆盖了当前设置的语言环境中的一个单独方面,也就是说,在cout的当前语言环境设置中,我仅更改了标点符号的方式。
do_decimal_point
是std::numpunct
的虚函数,您可以重新定义它以提供自定义分隔符。当打印数字时,numpunct::decimal_point
将使用此虚函数。正如@AkiRoss所说,您需要使用本地化。 一般来说,在您编写的任何程序中,第一件要做的事情之一就是通过执行类似以下操作来将全局语言环境设置为用户选择:
main
std::locale::global( std::locale( "" ) );
std::locale::global( std::locale( locale_name ) );
double x = 3.14;
这样的吗? - Andy Prowl