2009-10-23 4 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 * не всегда одинаковы. W в LPWSTR говорит вам, что это широкая строка (2 байта на символ). T в _TCHAR говорит, что размер зависит от того, компилируете ли вы свой проект с помощью юникодовых или многобайтовых наборов символов (в настройках проекта), в случае которых в зависимости от ваших настроек сборки будет 1 или 2 байта на символ. –

 Смежные вопросы

  • Нет связанных вопросов^_^