gpt4 book ai didi

c++ - 如何使用STL获取系统的小数分隔符?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:21:05 24 4
gpt4 key购买 nike

要使用正确的数字分隔符('.' 或 ',')生成 csv 文件,因为我希望它们与机器上安装的 Excel 版本兼容,我需要从 C++ 程序中获取小数点分隔符。

我的机器有法语版的 Windows/Excel,所以小数点分隔符是 ','。

int main()
{
std::cout << std::use_facet< std::numpunct<char> >(std::cout.getloc()).decimal_point();
return 0;
}

输出 .,这不是预期的

我尝试使用 WIN32 API:

int main()
{
TCHAR szSep[8];
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, szSep, 8);
std::cout << szSep;
}

输出 ,,这是预期的。

在 STL 中是否有任何等效于此 GetLocaleInfo 函数的函数可以在简单的 main 中运行?

最佳答案

感谢 user0042 链接示例,使用 STL 执行此操作的适当方法是:

int main()
{
// replace the C++ global locale as well as the C locale with the user-preferred locale
std::locale::global(std::locale(""));
// use the new global locale for future wide character output
std::cout.imbue(std::locale());

std::cout << std::use_facet< std::numpunct<char> >(std::cout.getloc()).decimal_point();
}

输出 ,,这是预期的。

或者,如果您不想更改全局:

int main()
{
std::cout.imbue(std::locale(""));
std::cout << std::use_facet< std::numpunct<char> >(std::cout.getloc()).decimal_point();
}

关于c++ - 如何使用STL获取系统的小数分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47835525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com