2009-10-23 6 views
2

S'il vous plaît quelqu'un pourrait-il expliquer pourquoi cela ne fonctionne pas?Comment est-ce que j'utilise CA2W de manière incorrecte?

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

Et s'il vous plaît dites-moi ce que je devrais faire à la place.

lieu de me donner le texte même, il me donne:

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

Répondre

4

Selon MSDN, ce qui est mauvais. J'ai donc utilisé ce lieu:

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

A partir de là, nous pouvons obtenir un type de LPWSTR si nous voulons vraiment:

LPWSTR test = szTest.m_psz; 

Il semble également préférable d'utiliser LPWSTR au lieu de _TCHAR * - mais je Je ne suis pas sûr (je pense qu'ils sont essentiellement la même chose, mais peut-être tort).

+1

LPWSTR et _TCHAR * ne sont pas toujours les mêmes. W dans LPWSTR vous indique que c'est une chaîne large (2 octets par caractère). T dans _TCHAR vous indique que la taille dépend de la compilation de votre projet avec des jeux de caractères unicode ou multi-octets (dans les paramètres du projet), auquel cas il y aura 1 ou 2 octets par caractère en fonction de vos paramètres de construction. –

Questions connexes