PDA

Просмотр полной версии : Чёзабред? Сравнение строк


Ya Zaregalsya
22.02.2023, 14:36
Совершенно разные строки дают ложно положительный результат на операторе сравнения.

C++:






void
Notifications
::
addWantedData
(
std
::
string name
,
int
wantedLevel
)
{
for
(
int
i
=
0
;
i

getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"[Ошибка]. Это имя уже есть в базе. %s == %s"
,
Notifications
::
wantedData
[
i
]
.
name
.
data
(
)
,
name
.
data
(
)
)
;
//Выводит разные имена, но всё равно сработало.
return
;
}
}
Notifications
::
WantedData
data
(
name
,
wantedLevel
)
;
Notifications
::
wantedData
.
push_back
(
data
)
;
Notifications
::
saveWantedData
(
)
;
}

RedHolms
22.02.2023, 14:38
попробуй c-шное сравнение

C++:






if
(
strcmp
(
str1
.
c_str
(
)
,
str2
.
c_str
(
)
)
==
0
)
{
// equal
}

Ya Zaregalsya
22.02.2023, 14:42
попробуй c-шное сравнение

C++:






if
(
strcmp
(
str1
.
c_str
(
)
,
str2
.
c_str
(
)
)
==
0
)
{
// equal
}





Помогло. Интересно в чём причина.

0Z0SK0
22.02.2023, 16:53
wantedData какой тип имеет?

Ya Zaregalsya
22.02.2023, 17:57
wantedData какой тип имеет?


Он имеет тип WantedData, это структура с полями std::string name и int wantedLevel.