Показать сообщение отдельно

  #10  
Старый 06.05.2024, 00:31
Smeruxa
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами: 2874035

Репутация: 183


По умолчанию

Цитата:
Сообщение от why ega  

Пытаюсь перевести строку из CP1251 в UTF8 для рендера в ImGUI, но результата 0 (в ответ получаю знаки вопроса):

C++:





Код:
auto
drawlist
=
ImGui
::
GetBackgroundDrawList
(
)
;
std
::
string huy
=
"huy"
drawlist
->
AddText
(
ImVec2
{
1000
,
100
}
,
0xFFFFFFFF
,
utils
::
convertCP1251ToUTF8
(
huy
.
c_str
(
)
)
)
;


C++:





Код:
std
::
string utils
::
CP1251ToUTF8
(
const
char
*
str
)
{
std
::
string res
;
int
result_u
,
result_c
;
result_u
=
MultiByteToWideChar
(
1251
,
0
,
str
,
-
1
,
0
,
0
)
;
if
(
!
result_u
)
return
0
;
wchar_t
*
ures
=
new
wchar_t
[
result_u
]
;
if
(
!
MultiByteToWideChar
(
1251
,
0
,
str
,
-
1
,
ures
,
result_u
)
)
{
delete
[
]
ures
;
return
0
;
}
result_c
=
WideCharToMultiByte
(
CP_UTF8
,
0
,
ures
,
-
1
,
0
,
0
,
0
,
0
)
;
if
(
!
result_c
)
{
delete
[
]
ures
;
return
0
;
}
char
*
cres
=
new
char
[
result_c
]
;
if
(
!
WideCharToMultiByte
(
CP_UTF8
,
0
,
ures
,
-
1
,
cres
,
result_c
,
0
,
0
)
)
{
delete
[
]
cres
;
return
0
;
}
delete
[
]
ures
;
res
.
append
(
cres
)
;
delete
[
]
cres
;
return
res
;
}

Меня спасло, и за тебя помолюсь ( с этим в принципе не нужны приколы с преобразованиями, у меня так )

C++:





Код:
#pragma execution_character_set("utf-8")
 
Ответить с цитированием