все норм там, у тебя мб с кодировкой проблемы. сколько юзал регулярки не встречался с такими проблемами.
Цитата:
Сообщение от Scar_
Почему краш?
C++:
Код:
stTextLabel Text3D
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
textLabel
[
i
]
;
if
(
std
::
strstr
(
Text3D
.
pText
,
"Осталось"
)
)
{
// Осталось 01:09
char
min
,
sec
;
std
::
sscanf
(
Text3D
.
pText
,
"Осталось %s:%s"
,
&
min
,
&
sec
)
;
SF
->
Log
(
"Minute: %s | Second: %s"
,
min
,
sec
)
;
}
возможно что-то из структур SAMP, Info, pPool, pText3D или сам текст Text3D.pText являтся nullptr, из-за чего случается краш. стоит проверить что все структуры и текст не являются nullptr. А вообще лучше использовать регулярки тут, т.к. твое условие может сработать и при "123 Осталось 123", а не только при том что тебе надо. (строить регулярки удобно можно на regex101.com) так же
Код:
std::sscanf
является небезопасной. вот тебе короткий пример по работе с регулярками.
C++:
[CODE]
constexpr
auto
pText
=
"Осталось 01:09"
;
std
::
cmatch cm
;
std
::
regex
re
(
R"(Осталось\s+(\d+)\\d+))"
,
std
::
regex
::
icase
)
;
if
(
std
::
regex_match
(
pText
,
cm
,
re
)
)
{
auto
minutes
=
cm
[
1
]
.
str
(
)
;
auto
seconds
=
cm
[
2
]
.
str
(
)
;
std
::
cout