2016-12-14 64 views
0

在MFC文本說我想的TextOut線,在格式化文本是右對齊,如:從字符轉換空白處wchar_t的

1234 

225 

    64 

但是,下面的代碼無法正常工作:

wchar_t test[20]; 
int i; 
swprintf(test, L"%4d",i); 

似乎在wchar_t中轉換的空格仍然只佔用一個字節的空間,而不是兩個,因此文本沒有對齊。有沒有簡單的方法來解決它?謝謝。

+0

'i'未初始化......這個例子應該打印什麼? – StoryTeller

+2

有什麼'mfc'這樣做?如果您嘗試在文本框或其他窗口小部件上顯示,那麼該窗口小部件將具有文本否的右對齊屬性? – EdChum

+0

閱讀有關價值理由的內容。 –

回答

0

與所有其他UTF-16編碼字符一樣,空格字符也由兩字節代碼單元組成。致電swprintf按照廣告作品1)2)。錯誤是在代碼或邏輯驗證你的假設,我們看不到的代碼。驗證使用

0x20 0x00 0x20 0x00 0x36 0x00 0x34 0x00 0x00 0x00 
+-------+ +-------+ +-------+ +-------+ +-------+ 
    L' '  L' '  L'6'  L'4'  L'\0' 


1):

作爲參考,下面的代碼

wchar_t test[20]; 
swprintf(test, L"%4d", 64); 

填充用的字節以下序列(僅供參考字符表示)的緩衝器Visual Studio 2015更新3.
2)雖然您確實應該使用符合ISO的std::swprintf,並採用顯式的目標緩衝區大小參數。