string使用LPCTSTR连接char *

时间:2009-08-12 05:00:52

标签: c character-encoding strcat

LPCTSTR Machine=L"Network\\Value";
char s[100]="Computer\\";
strcat(s,(const char*)Machine); 
printf("%s",s); 

这里我收到的输出计算机\ N 只是我希望输出像Computer \ Network \ Value。 为此提供解决方案..

3 个答案:

答案 0 :(得分:3)

字符串指向Machine是一个unicode字符串,因此在字符“N”后面有一个NULL字符。因此,如果您使用非unicode字符串连接,您将获得类似的输出。你不应该混合unicode和非unicode字符串。你可以这样做:

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

答案 1 :(得分:2)

您尝试使用Unicode字符串连接ANSI字符串。那不行。要么创建第一个字符串ANSI

LPCSTR Machine="Network\\Value";

或使用MultiByteToWideChar()转换第二个。

答案 2 :(得分:0)

Pure C90:

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