LPCTSTR Machine=L"Network\\Value";
char s[100]="Computer\\";
strcat(s,(const char*)Machine);
printf("%s",s);
這裏我收到輸出計算機\ n只有我期待像電腦\網絡\值輸出。 爲此提供解決方案..字符串串連的char *與LPCTSTR
LPCTSTR Machine=L"Network\\Value";
char s[100]="Computer\\";
strcat(s,(const char*)Machine);
printf("%s",s);
這裏我收到輸出計算機\ n只有我期待像電腦\網絡\值輸出。 爲此提供解決方案..字符串串連的char *與LPCTSTR
您嘗試使用Unicode字符串cancat ANSI字符串。這是行不通的。或者使fisrt字符串ANSI
LPCSTR Machine="Network\\Value";
或使用MultiByteToWideChar()轉換第二個字符串。
指向的字符串Machine是一個unicode字符串,因此在字符'N'後面有一個NULL字符。所以如果你使用非Unicode字符串concatanation你會得到這樣的輸出。你不應該混合這樣的unicode和非unicode字符串。你可以這樣做:
LPCTSTR Machine=L"Network\\Value";
TCHAR s[100]=_T("Computer\\");
_tcscat(s,Machine);
std::wcout<<s;
純C90:
wcstombs(s+strlen(s), Machine, sizeof(s)-strlen(s));
我知道,但我不能通過編碼探索..如果你可以告訴我通過編碼的解決方案..謝謝 – Rajakumar 2009-08-12 05:21:55
我只需要LPCTSTR和CHAR組合... – Rajakumar 2009-08-12 05:24:42
只有兩個選項 - 如果其中一個字符串是恆定的(硬編碼)你可以適當地聲明它,否則你需要使用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