假设我想在MFC中输出文本行,将文本格式化为右对齐,如:
1234
225
64
但以下代码效果不佳:
wchar_t test[20];
int i;
swprintf(test, L"%4d",i);
似乎在wchar_t中转换的空格仍然只占用一个字节的空间而不是两个,因此文本不对齐。有没有一种简单的方法来解决它?感谢。
答案 0 :(得分:0)
与所有其他UTF-16编码字符一样,空格字符也包含两个字节的代码单元。 swprintf调用的作用与广告 1) 2)相同。错误在代码或逻辑中验证您的假设,我们无法看到的代码。
供参考,以下代码
wchar_t test[20];
swprintf( test, L"%4d", 64 );
使用以下字节序列填充缓冲区(提供的字符表示形式):
0x20 0x00 0x20 0x00 0x36 0x00 0x34 0x00 0x00 0x00
+-------+ +-------+ +-------+ +-------+ +-------+
L' ' L' ' L'6' L'4' L'\0'
<小时/> 1) 使用Visual Studio 2015 Update 3验证。