2009-08-12 4 views
1
LPCTSTR Machine=L"Network\\Value"; 
char s[100]="Computer\\"; 
strcat(s,(const char*)Machine); 
printf("%s",s); 

Ici, je reçu la sortie Computer \ N que j'attendre la sortie comme ordinateur \ réseau \ Value. Donner la solution pour cela ..chaîne concatenate char * avec LPCTSTR

Répondre

2

Vous essayez d'annuler une chaîne ANSI avec une chaîne Unicode. Cela ne marchera pas. Soit rendre la chaîne de caractères ANSI fisrt

LPCSTR Machine="Network\\Value"; 

ou convertir la seconde avec MultiByteToWideChar().

+0

je sais mais je ne peux pas explorer via le codage .. si vous pouvez me dire la solution par le codage .. merci – Rajakumar

+0

j'ai besoin LPCTSTR et CHAR combinaison seulement ... – Rajakumar

+0

Vous avez seulement deux options - si l'une des chaînes est constante (codée en dur) vous pouvez simplement le déclarer de manière appropriée, sinon vous devez utiliser MultiByteToWideChar() pour la conversion. Ce dernier est décrit dans http://stackoverflow.com/questions/606075/how-to-convert-char-to-bstr/606122#606122 sauf que vous pouvez utiliser malloc/free (ou mieux new/delete) au lieu de SysAllocString/SysFreeString. – sharptooth

3

La chaîne pointée Machine est une chaîne unicode et possède donc un caractère NULL après le caractère 'N'. Donc, si vous utilisez une concaténation de chaîne non-unicode, vous obtiendrez la sortie comme ça. Vous ne devriez pas mélanger les chaînes unicode et non-unicode comme ça. Vous pouvez le faire comme ceci:

LPCTSTR Machine=L"Network\\Value"; 
TCHAR s[100]=_T("Computer\\"); 
_tcscat(s,Machine); 
std::wcout<<s; 
+0

est-il est une possibilité avec seulement travailler avec strcat sans utiliser (TCHAR, _tcscat), si possible, s'il vous plaît répondre que .. – Rajakumar

+0

Yes..you peut le faire comme suggéré par sharptooth. – Naveen

0

C90 pur:

wcstombs(s+strlen(s), Machine, sizeof(s)-strlen(s));