使用 C 在 Windows 中打印带有千位分隔符的整数

发布于 2024-10-01 00:54:25 字数 370 浏览 2 评论 0原文

我想这个问题是不言自明的。我正在使用 printf 和朋友(snprintf 等)来显示一些数百万或数十万范围内的内存统计信息。对于我懒惰的思维方式来说,读取“1,523,556”这样的数字比“1523556”容易得多。

我尝试过设置区域设置并在格式说明符(%'d 和 %'llu)之前使用撇号标志,但撇号显然是 SUS 的标准,因此它在 Windows 下可能对我不起作用。

是否有特定于 Windows 的 API 可以执行此操作?我正在使用 Pelles C 并直接使用 ANSI C99 进行编程。

** 编辑 **

阅读答案和与之相关的 MSDN 页面后,我明白为什么 .NET 是现在 Windows 编程的首选方法。它简化了大量的 API 工作。

The question is pretty self-explanatory, I suppose. I am using printf and friends (snprintf etc) to display some memory statistics that are in the millions or hundreds-of-thousands range. Reading a number formatted like "1,523,556" is much easier than "1523556" to my lazy way of thinking.

I have tried setting the locale and using the apostrophe flag before the format specifier (%'d and %'llu), but the apostrophe is apparently a standard from the SUS, so it may not work for me under Windows anyway.

Is there a Windows-specific API for doing this? I am working with Pelles C and programming in straight ANSI C99.

** EDIT **

After reading the answers and the MSDN pages associated with them, I understand why .NET is the preferred method for Windows programming now. It smooths over a tremendous amount of API work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

慕烟庭风 2024-10-08 00:54:25

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

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

The Win32 API does provide a function that will format a number with thousands grouping (or whatever grouping is appropriate for the specified locale): GetNumberFormat() (http://msdn.microsoft.com/en-us/library/dd318110.aspx).

Unfortunately, it's a pretty painful API to use - not nearly as simple as the apostrophe format specifier in SUS (on the other hand, you get a lot of flexibility in exchange for the complexity)

辞慾 2024-10-08 00:54:25

使用 GetNumberFormatEx(适用于 Windows Vista 和之后)。 LOCALE_NAME_USER_DEFAULT 选项使用控制面板中区域和语言选项下设置的首选项,包括千位分隔符。

Use GetNumberFormatEx (for Windows Vista and later). The option LOCALE_NAME_USER_DEFAULT uses the preferences set in the Control Panel under regional and language options, including a thousands seperator.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文