我有这个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);
Run Code Online (Sandbox Code Playgroud)
输出s1是123,456,789.
即使我设置->thousands_sep到'它被忽略.有没有办法将任何字符设置为千位分隔符?
这是一个非常简单的解决方案,适用于每个 Linux 发行版,并且不需要 - 作为我的第一个答案 - 黑客glibc:
在按照本说明的建议使用单独的构建目录构建版本后,所有这些步骤都必须在原始 目录中执行glibc,而不是在构建目录中。glibc
我的新locale文件名为en_AT.
localedata/locales/在目录中从现有文件创建en_US一个新文件en_AT。thousands_septothousands_sep "<U0027>"或您想要用作千位分隔符的任何字符。en_US为en_AT。localedata/SUPPORTED:en_AT.UTF-8/UTF-8 \.make localedata/install-locales。locale将自动添加到系统中,并且程序可以立即访问。在 C/C++ 程序中,您可以使用以下命令切换到新的千位分隔符:
setlocale( LC_ALL, "en_AT.UTF-8" );
使用它printf( "%'d", 1000000 );产生这个输出
1'000'000
备注:当您在程序中需要在运行时确定的不同本地化时,您可以从加载请求的页面中使用此示例,只需替换.manlocaleLC_NUMERICen_AT
| 归档时间: |
|
| 查看次数: |
9580 次 |
| 最近记录: |