Как преобразовать строку 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;
}
Другие вопросы по тегам