一旦我使用
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/