2009-08-12 80 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));