[英]Printing integers with thousands separators in Windows using C
我想这个问题是不言而喻的。 我正在使用printf和朋友(snprintf等)来显示一些数百万或数十万范围的内存统计信息。 以我的懒惰思维方式,读取格式为“ 1,523,556”的数字比“ 1523556”要容易得多。
我尝试设置语言环境并在格式说明符(%'d和%'llu)之前使用撇号标志,但是撇号显然是SUS的标准,因此无论如何我都无法在Windows下使用撇号。
是否有Windows专用的API可以执行此操作? 我正在使用Pelles C和直接在ANSI C99中进行编程。
**编辑**
阅读答案和与之相关的MSDN页面之后,我了解了为什么.NET现在是Windows编程的首选方法。 它可以简化大量的API工作。
Win32 API确实提供了一种功能,该功能将格式化具有数千个分组(或适合于指定语言环境的任何分组)的数字: GetNumberFormat()
( http://msdn.microsoft.com/zh-cn/library/dd318110.aspx )。
不幸的是,这是一个非常痛苦的API的使用-不像SUS中的撇号格式说明符那么简单(另一方面,您获得了很多灵活性来换取复杂性)
使用GetNumberFormatEx (对于Windows Vista和更高版本)。 选项LOCALE_NAME_USER_DEFAULT
使用在“控制面板”中的区域和语言选项下设置的首选项,包括数千个分隔符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.