Как преобразовать строку LPCSTR в строку LPCTSTR?
Я пытаюсь преобразовать LPCSTR
вступить в LPCTSTR
строка. я хочу объединить две строки, когда я пытаюсь так
LPCTSTR str1 = L"Raja"
LPCSTR str2 = "Kumar"
wcscat_s(str1,(LPCTSTR)str2);
Я нашел O / P, как Раджа.... R (Junkvalues).... как можно Typecast LPCSTR
в LPCTSTR
?
3 ответа
LPCTSTR
в зависимости от настроек вашего проекта может быть обычным символом или широким символом. Кроме того, вы не можете объединить широкую строку и обычную строку символов. Вам необходимо преобразовать один в совместимую форму (широкий в многобайтовый или наоборот), а затем объединить.
Предполагая, что вы хотите, чтобы цель была широкой строкой, вам нужно преобразовать "Kumar"
в строку широких символов. Для этого используйте MultiByteToWideChar
функция с соответствующей кодовой страницей.
Посмотрите эту статью KB на MSDN и ссылку Джона.
Смотрите эти заметки: Распутывание строк в Visual C++. В примечаниях обсуждаются различные виды строк, которые вы увидите в разработке Microsoft C++, и способы их преобразования.
MultiByteToWideChar - единственный путь, если ваш код скомпилирован с UNICODE.
В качестве альтернативы вы можете сделать это. 7bit ASCII -> wchar должно быть легко.
TCHAR str3[256] = { 0 };
for (int i = 0; str2[i] != 0; i++) str3[i] = str2[i];
Я пробовал это сработало:
#include <iostream>
#include <atlstr.h>
using namespace std;
int main()
{
LPCSTR stringToConvert = "My troublesome string";
CString transitionString = stringToConvert;
LPCTSTR myDesiredString = transitionString;
wcout << myDesiredString;
}