字符串连接字符*和LPCTSTR

字符串连接字符*和LPCTSTR,c,character-encoding,strcat,C,Character Encoding,Strcat,在这里,我收到了输出Computer\N我只希望得到类似Computer\Network\Value的输出。 给出解决方案。字符串指向的机器是unicode字符串,因此在字符“N”后有一个空字符。因此,如果您使用非unicode字符串concatation,您将得到这样的输出。您不应该像这样混合使用unicode和非unicode字符串。您可以这样做: LPCTSTR Machine=L"Network\\Value"; char s[100]="Computer\\"; strcat(s,(c

在这里,我收到了输出Computer\N我只希望得到类似Computer\Network\Value的输出。
给出解决方案。

字符串指向的机器是unicode字符串,因此在字符“N”后有一个空字符。因此,如果您使用非unicode字符串concatation,您将得到这样的输出。您不应该像这样混合使用unicode和非unicode字符串。您可以这样做:

LPCTSTR Machine=L"Network\\Value";
char s[100]="Computer\\";
strcat(s,(const char*)Machine); 
printf("%s",s); 
LPCTSTR Machine=L“网络\\值”;
TCHAR s[100]=“计算机\\”;
_tcscat(s,机器);

std::wcout字符串指向的机器是unicode字符串,因此在字符“N”后有一个空字符。因此,如果您使用非unicode字符串concatation,您将得到这样的输出。您不应该像这样混合使用unicode和非unicode字符串。您可以这样做:

LPCTSTR Machine=L"Network\\Value";
char s[100]="Computer\\";
strcat(s,(const char*)Machine); 
printf("%s",s); 
LPCTSTR Machine=L“网络\\值”;
TCHAR s[100]=“计算机\\”;
_tcscat(s,机器);

std::wcout您试图用Unicode字符串替换ANSI字符串。那不行。或者将第一个字符串设置为ANSI

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

或者使用MultiByteToWideChar()转换第二个字符串。

您尝试使用Unicode字符串转换ANSI字符串。那不行。或者将第一个字符串设置为ANSI

LPCTSTR Machine=L"Network\\Value";
TCHAR  s[100]=_T("Computer\\");
_tcscat(s,Machine); 
std::wcout<<s;
或者使用MultiByteToWideChar()转换第二个值。

纯C90:

LPCSTR Machine="Network\\Value";
纯C90:

LPCSTR Machine="Network\\Value";

是否有可能只使用strcat而不使用(TCHAR,_tcscat),如有可能,请在中回答..是..您可以按照sharptooth的建议进行。是否有可能只使用strcat而不使用(TCHAR,_tcscat),如有可能,请回答..是..您可以按照sharptooth的建议进行操作。我知道,但我无法通过编码进行探索..如果您可以通过编码告诉我解决方案..谢谢您只有两个选项-如果其中一个字符串是常量(硬编码),您可以正确声明它,否则您需要使用MultiByteToWideChar()进行转换。后者在中介绍,但您可以使用malloc/free(或更好的new/delete)而不是SysAllocString/SysFreeString。我知道,但我无法通过编码进行探索。如果您可以通过编码告诉我解决方案。谢谢您只有两个选项-如果其中一个字符串是常量(硬编码),您可以适当地声明它,否则,需要使用MultiByteToWideChar()进行转换。中介绍了后者,但您可以使用malloc/free(或更好的new/delete)代替SysAllocString/SysFreeString。