2009-10-23 69 views
2

請有人解釋爲什麼這不起作用?我如何錯誤地使用CA2W?

char *test = "test"; 
_TCHAR *szTest = CA2W(test); 

請告訴我應該做些什麼。

而不是給我同等的文本,它給我:

﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾﻾ 

回答

4

根據MSDN,這是不好的。所以我用這個代替:

char *test = "test"; 
CA2W szTest(test); 

從這裏,我們可以得到一個LPWSTR類型,如果我們真的想:

LPWSTR test = szTest.m_psz; 

似乎還更好地使用LPWSTR而不是_TCHAR * - 但我米不知道(我認爲他們本質上是一樣的東西,但可能是錯的)。

+1

LPWSTR和_TCHAR *並不總是相同的。 LPWSTR中的W告訴你它是一個寬字符串(每個字符2個字節)。在_TCHAR中,T的大小取決於您是使用Unicode還是多字節字符集編譯項目(在項目設置中),在這種情況下,根據您的構建設置,每個字符會有1或2個字節。 – 2010-12-15 13:29:19