Как преобразовать строку из wchar_t в LPSTR. спасибо за ответ.Как преобразовать из wchar_t в LPSTR
ответ
wchar_t
строка состоит из 16-битных, LPSTR
является указателем на строку октетов, определяется следующим образом:
typedef char* PSTR, *LPSTR;
Что важно, что LPSTR может быть нулевым байтом ,
При переводе с wchar_t
на номер LPSTR
вам необходимо принять решение о кодировке. После этого вы можете использовать функцию WideCharToMultiByte
для выполнения преобразования.
Например, вот как перевести широкоэкранный строку символов в UTF8, используя STL строки, чтобы упростить управление памятью:
#include <windows.h>
#include <string>
#include <vector>
static string utf16ToUTF8(const wstring &s)
{
const int size = ::WideCharToMultiByte(CP_UTF8, 0, s.c_str(), -1, NULL, 0, 0, NULL);
vector<char> buf(size);
::WideCharToMultiByte(CP_UTF8, 0, s.c_str(), -1, &buf[0], size, 0, NULL);
return string(&buf[0]);
}
Вы можете использовать эту функцию, чтобы переведите wchar_t*
в LPSTR
так:
const wchar_t *str = L"Hello, World!";
std::string utf8String = utf16ToUTF8(str);
LPSTR lpStr = utf8String.c_str();
Следует отметить, что 16 бит специфичны для окон, а другая реализация может (и будет) иметь разные размеры для wchar_t и/или char. – PlasmaHH
спасибо, а для преобразования LPSTR в wstring, как я могу это сделать? – nidhal
@PlasmaHH: Да, это правда - я строго говорил с Windows в виду (поскольку он был помечен как visual-C++). –
Я использую это
wstring mywstr(somewstring);
string mycstr(mywstr.begin(), mywstr.end());
затем использовать его в качестве mycstr.c_str()
(редактировать, так как я не могу комментировать) это, как я использовал это, и она отлично работает:
#include <string>
std::wstring mywstr(ffd.cFileName);
std::string mycstr(mywstr.begin(), mywstr.end());
pRequest->Write(mycstr.c_str());
и каковы эти функции? –
- 1. не удается преобразовать из LPSTR в wchar_t
- 2. Как преобразовать из wchar_t * в wstring?
- 3. Преобразовать символ в wchar_t
- 4. Как преобразовать wchar_t ** в char **?
- 5. Как преобразовать jstring в wchar_t *
- 6. Как конвертировать CString LPSTR
- 7. Преобразовать wchar_t в CFStringref
- 8. Невозможно преобразовать из 'const wchar_t *' в '_TCHAR *'
- 9. Как преобразовать переменную wchar_t * в массив типа wchar_t []?
- 10. Как преобразовать const wchar_t * в wchar_t или многобайтовый символ?
- 11. не может преобразовать из 'std :: string' в 'LPSTR'
- 12. Как преобразовать char/* в wchar_t/* --- но
- 13. Как преобразовать wchar_t * в std :: string? .?
- 14. Как преобразовать массив символов в массив wchar_t?
- 15. Как преобразовать строку char в строку wchar_t?
- 16. Установить LPSTR из CString
- 17. Преобразовать вектор со значениями чисел wchar_t в wchar_t
- 18. Как конфертировать из LPCTSTR в LPSTR?
- 19. Невозможно преобразовать «символ **» к «wchar_t **»
- 20. Преобразовать в wchar_t элемент кода в C
- 21. Конвертировать из wchar_t в int
- 22. Преобразование LPSTR в LPCWSTR
- 23. Нужно преобразовать char * (pointer) в wchar_t * (pointer)
- 24. Преобразовать символ * в wchar_t * с помощью mbstowcs_s
- 25. Строковые типы в C++: как конвертировать из LPWSTR в LPSTR?
- 26. LPSTR (Char *) в .NET
- 27. Как скопировать/преобразовать строку символов в строку wchar_t в C?
- 28. Как преобразовать wchar_t [] в basic_string <_Elem>?
- 29. Как вернуть wchar_t из функции
- 30. Как декодировать символ из wchar_t
ли вы имеете в виду от '' LPWSTR' в LPSTR '? – Mehrdad