使用C在Windows中使用数千个分隔符打印整数

时间:2010-11-05 18:39:29

标签: c windows number-formatting

我想这个问题非常明显。我正在使用printf和朋友(snprintf等)来显示一些数百万或数十万的内存统计信息。阅读格式为“1,523,556”的数字比“懒惰的思维方式”更容易“1523556”。

我已经尝试设置语言环境并在格式说明符(%'d和%'llu)之前使用撇号标记,但是撇号显然是SUS的标准,所以它在Windows下可能对我不起作用。

是否有针对Windows的API?我正在使用Pelles C并使用ANSI C99编程。

**编辑**

在阅读了答案以及与它们相关的MSDN页面后,我理解为什么.NET现在是Windows编程的首选方法。它平滑了大量的API工作。

2 个答案:

答案 0 :(得分:2)

Win32 API确实提供了一个函数,它将使用数千个分组格式化数字(或任何适合指定区域设置的分组):GetNumberFormat()http://msdn.microsoft.com/en-us/library/dd318110.aspx)。

不幸的是,这是一个非常痛苦的API使用 - 不像SUS中的撇号格式说明符那么简单(另一方面,你可以获得很大的灵活性来换取复杂性)

答案 1 :(得分:1)

使用GetNumberFormatEx(适用于Windows Vista及更高版本)。选项LOCALE_NAME_USER_DEFAULT使用区域和语言选项下控制面板中设置的首选项,包括数千个分隔符。