字段宽度不能用于现代多语言系统上的对齐。即使printf在对齐时可以计算字符而不是字节(注意:wide printf-family 函数可以做到这一点),这将无法适应组合字符(通常不使用水平空间)以及 CJK 宽字符(通常使用终端上的 2 列)。
我能想到的最好方法是首先将您的字符串转换为wchar_t字符串,然后用于wcswidth确定其在字符单元格列中的宽度。%.*s然后使用带有参数的字段说明符在字段之前或之后添加适当数量的空格n,""其中n是您要显示的空格数。