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

  #9  
Старый 06.05.2024, 00:26
вайега52
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами: 2055431

Репутация: 3


По умолчанию

Пытаюсь перевести строку из 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
;
}
 
Ответить с цитированием