c - printf ("%-10s") 在系统区域设置中工作错误

标签 c utf-8 locale printf

一旦我使用

setlocale(LC_ALL, ""); //use system locale

printf 函数未右对齐。如何在不同的语言环境中对齐字符串?

最佳答案

字段宽度不能用于现代多语言系统上的对齐。即使 printf 在对齐时可以计算字符而不是字节(注意:宽 printf 系列函数可以做到这一点),也将无法适应组合字符(通常不使用水平空格)以及 CJK 宽字符(通常在终端上使用 2 列)。

我能想到的最好方法是首先将字符串转换为 wchar_t 字符串,然后使用 wcswidth 确定其在字符单元格列中的宽度。然后使用带有参数 n""%.*s 字段说明符在字段之前或之后添加适当数量的空格,其中 n 是您要显示的空格数。

关于c - printf ("%-10s") 在系统区域设置中工作错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431950/

相关文章:

javascript - 如何在Javascript中显示阿拉伯语?

javascript - 有效的 json 字符串但无法解析

iis-7 - VBScript 日期格式与区域设置不匹配

magento - 如何获取Magento商店货币

c - 静态变量未被初始化

c - 输入问题 scanf()/getchar()

c - 为什么 fgets 不能从 popen 流中获取所有字节

c - gtree 中的值错误

mysql - 当 str 包含 'é' 或 'ë' 且 substr 仅包含 'e' 时,INSTR(str,substr) 不起作用

java - 为什么 Android 的 NumberFormat 使用逗号作为澳大利亚的小数点分隔符?