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

这里我收到输出计算机\ n只有我期待像电脑\网络\值输出。 为此提供解决方案..字符串串连的char *与LPCTSTR

回答

2

您尝试使用Unicode字符串cancat ANSI字符串。这是行不通的。或者使fisrt字符串ANSI

LPCSTR Machine="Network\\Value"; 

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

+0

我知道,但我不能通过编码探索..如果你可以告诉我通过编码的解决方案..谢谢 – Rajakumar 2009-08-12 05:21:55

+0

我只需要LPCTSTR和CHAR组合... – Rajakumar 2009-08-12 05:24:42

+0

只有两个选项 - 如果其中一个字符串是恒定的(硬编码)你可以适当地声明它,否则你需要使用MultiByteToWideChar()进行转换。后者是在http://stackoverflow.com/questions/606075/how-to-convert-char-to-bstr/606122#606122中描述的,除了您可以使用malloc/free(或更好的新/删除)而不是SysAllocString/SysFreeString。 – sharptooth 2009-08-12 05:39:27

3

指向的字符串Machine是一个unicode字符串,因此在字符'N'后面有一个NULL字符。所以如果你使用非Unicode字符串concatanation你会得到这样的输出。你不应该混合这样的unicode和非unicode字符串。你可以这样做:

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

有是仅与strcat的工作方法可行任何不使用(TCHAR,_tcscat),如果可能的话,请回复,在... – Rajakumar 2009-08-12 05:20:21

+0

Yes..you可以做到这一点的建议通过锐利。 – Naveen 2009-08-12 05:25:27

0

纯C90:

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