gpt4 book ai didi

c - 为 C printf 设置千位分隔符

转载 作者:太空狗 更新时间:2023-10-29 17:02:56 24 4
gpt4 key购买 nike

我有这个 C 代码:

locale_t myLocale = newlocale(LC_NUMERIC_MASK, "en_US", (locale_t) 0);
uselocale(myLocale);
ptrLocale = localeconv();
ptrLocale->thousands_sep = (char *) "'";

int i1 = snprintf( s1, sizeof(s1), "%'d", 123456789);

s1 中的输出是 123,456,789

即使我将 ->thousands_sep 设置为 ',它也会被忽略。有没有办法将任何字符设置为千位分隔符?

最佳答案

这是一个非常简单的解决方案,适用于每个 Linux 发行版,并且不需要 - 作为我的第一个答案 - glibc破解:


所有这些步骤都必须在 origin 中执行 glibc目录 - NOT 在构建目录中 - 在构建 glibc 之后使用此 instructions 建议的单独构建目录的版本.

我的新locale文件名为 en_AT .

  1. localedata/locales/ 中创建来自现有文件的目录 en_US一个新文件 en_AT .
  2. 更改 thousands_sep 的所有条目至 thousands_sep "<U0027>"或您想要作为千位分隔符的任何字符。
  3. 在新文件中更改所有出现的 en_USen_AT .
  4. 添加到文件localedata/SUPPORTED行:en_AT.UTF-8/UTF-8 \ .
  5. build目录下运行make localedata/install-locales .
  6. locale然后将自动添加到系统中,程序可以即时访问。

在 C/C++ 程序中,您切换到新的千位分隔符:

setlocale( LC_ALL, "en_AT.UTF-8" );

printf( "%'d", 1000000 ); 一起使用产生这个输出

1'000'000


备注:当您在程序中需要在运行时确定的不同本地化时,您可以使用此example来自 man您加载请求的页面 locale只需替换 LC_NUMERIC来自 en_AT 的设置.

关于c - 为 C printf 设置千位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28744647/

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