Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/78: Рейтинг темы: голосов - 78, средняя оценка - 4.59
3 / 2 / 1
Регистрация: 19.07.2009
Сообщений: 46

Как преобразовать LPWSTR в LPSTR и обратно?

28.09.2009, 10:48. Показов 16563. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Раз и навсегда мне бы уяснить и я бы был счастлив.

Обычное приведение типа конвертирует только первую букву

C++
1
2
3
    LPSTR ch = new char [100];
    LPWSTR wch = L"Hello world!";
    ch = LPSTR(wch);
И так тоже:

C++
1
2
3
    LPSTR ch = new char [100];
    LPWSTR wch = L"Hello world!";
    ch = (LPSTR)wch;
И так тоже:

C++
1
2
3
    LPSTR ch = new char [100];
    LPWSTR wch = L"Hello world!";
    ch = reinterpret_cast<char*>(wch);

Я конечно понимаю, что можно это сделать в цикле, но думаю, есть более красивые и аккуратные методы. Если знаете - поделитесь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.09.2009, 10:48
Ответы с готовыми решениями:

Стоит ли в C++ Builder применять такие типы как TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR
Здравствуйте. Стоит ли в C++ Builder применять такие типы как TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR и тп ? Потому что в VS++ Нет как...

Зачем использовать TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR?
Почитал статью о макросах TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR. И меня возникло пару вопросов. 1. Зачем вообще их использовать? (Для...

Как преобразовать char в LPWSTR?
Я работаю с процессами и использую функцию создания процесса: char cmd; strcpy(cmd, &quot;D:\\temp\\Sorting.exe&quot;); ...

6
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
28.09.2009, 10:54
C++
1
2
3
4
5
USES_CONVERSION;
whar_t *w_str = L"Some unicode string";
char *str = "Some char string";
char *a =  W2A(w_str);
w_char *b = A2W (str);
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
28.09.2009, 12:55
Mind31,
самый простой способ - через обёртки из библиотеки ATL (примерно то, что у oxotnik, но у него устаревший вариант, и к тому же код кривоватый)

В ATL7 всё гораздо проще:

C++
1
2
3
4
5
6
#include <atlstr.h>
 
CStringW w_str = L"Some unicode string";
CStringA str = "Some char string";
CStringA a =  w_str;
CStringW b = str;
1
1 / 1 / 1
Регистрация: 18.07.2014
Сообщений: 12
20.08.2016, 01:45
у меня так работает
C++
1
2
3
4
5
6
7
8
9
10
11
LPWSTR convertStr(LPCSTR pInStr)
{
    int length = strlen(pInStr);
    wchar_t * pwstr = new wchar_t[length];
    int result = MultiByteToWideChar(
        CP_ACP, MB_PRECOMPOSED, pInStr, length,
        pwstr, length
    );
    pwstr[length] = L'\0';
    return LPWSTR(pwstr);
}
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
20.08.2016, 06:22
C++
1
2
3
wchar_t * pwstr = new wchar_t[length];
//...
pwstr[length] = L'\0';
Здесь выход за пределы массива.
1
1 / 1 / 1
Регистрация: 18.07.2014
Сообщений: 12
21.08.2016, 11:23
спасибо за поправку, забыл уже
0
 Аватар для ASCII
99 / 70 / 13
Регистрация: 15.12.2013
Сообщений: 463
26.08.2016, 12:30
Rififi, действительно красиво
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.08.2016, 12:30
Помогаю со студенческими работами здесь

Как преобразовать все int,float,double в строки LPWSTR, LPCTSTR
Столкнулся с проблемой не как не переведу в нормальный вид вот код #include &lt;iostream&gt; #include &lt;Windows.h&gt; ...

Преобразовать unsigned long в lpstr
unsigned long drive_sn = 5555555; LPSTR pszData; В гугле нигде не нашел информации о том, как преобразовать unsigned long в lpstr. ...

Fopen: невозможно преобразовать параметр 1 из 'LPWSTR' в 'const char *'
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include&lt;cstdio&gt; #include&lt;io.h&gt; int APIENTRY WinMain(HINSTANCE hInst,HINSTANCE...

GetUserNameW: невозможно преобразовать параметр 1 из 'char [257]' в 'LPWSTR'
Не работает код: char buffer;// буфер DWORD size;// размер size=sizeof(buffer);// размер буфера GetUserName(buffer,&amp;size); ...

Как преобразовать число в строку и обратно
Всем доброго времени! Помогите решить проблему -&gt; преобразовать число в строку и обратно Код довольно простой, беру из тектового поле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru