как преобразовать строку LPCSTR в строку LPCTSTR?

я пытаюсь преобразовать строку LPCSTR в строку LPCTSTR. я хочу объединить две строки, когда я пытаюсь так

LPCTSTR str1 = L"Raja"
LPCSTR str2 = "Kumar"
wcscat_s(str1,(LPCTSTR)str2);

я нашел o/p, например Raja....r(junkvalues).... как можно преобразовать LPCSTR в LPCTSTR?


person Rajakumar    schedule 29.10.2009    source источник


Ответы (4)


LPCTSTR может быть как обычным, так и широким символом в зависимости от настроек вашего проекта. Кроме того, вы не можете объединить широкую строку и простую строку char. Вам нужно преобразовать один в совместимую форму (широкий в многобайтовый или наоборот), а затем объединить.

Предполагая, что вы хотите, чтобы целью была широкая строка, вам нужно преобразовать "Kumar" в широкую строку символов. Для этого используйте функцию MultiByteToWideChar с соответствующей кодовой страницей.

Найдите эту статью базы знаний в MSDN и ссылку Джона.

person dirkgently    schedule 29.10.2009

См. следующие примечания: Расшифровка строк в Visual C++. В примечаниях обсуждаются различные типы строк, которые вы встретите при разработке Microsoft C++, и способы преобразования между ними.

person John D. Cook    schedule 29.10.2009

MultiByteToWideChar — единственный выход, если ваш код скомпилирован с использованием UNICODE.

В качестве альтернативы вы можете сделать это. 7bits ASCII -> wchar должно быть легко.

TCHAR str3[256] = { 0 };
for (int i = 0; str2[i] != 0; i++) str3[i] = str2[i];
person s k    schedule 28.06.2017

Я попробовал это, это сработало:

#include <iostream>
#include <atlstr.h>

using namespace std;
int main()
{
    LPCSTR stringToConvert = "My troublesome string";
    CString transitionString = stringToConvert;
    LPCTSTR myDesiredString = transitionString;

    wcout  << myDesiredString;
}
person LAVIUS NKATEKO MOTILENG    schedule 06.02.2020