我使用wprintf打印出不同大小的c字符串。
wprintf(L"%-*.*ls ", PRINTED_WORD_LENGTH, PRINTED_WORD_LENGTH, word->string);
int i;
for (i = 0; i < word->usage_length; i++) {
printf("%d ", word->usage[i]);
}
printf("\n");
如您所见,这些字符串包含一些变音字符。具有这些字符的行没有正确格式化(wprintf在遇到它们时没有使用足够的空格)。有没有办法在不编写新函数的情况下正确格式化行?
z 39 46 62 113
za 101 105
zabawa 132
zasną 123
zatrzymać 88
答案 0 :(得分:0)
它们在字节级别正确地对齐。只是因为您将其视为UTF-8多字节字符会让您感觉它们没有正确对齐(对于您要使用的文本对齐的任何定义。)
如果您的目标是符合POSIX的实现,您可以使用wcswidth(3)函数:它是故意指定来解决这类问题(最初使用CJKV字符。)虽然它有点低级但是