Неверное сравнение строк

У меня есть проблема, которую я вообще не могу понять!

В моей программе пользователь вводит номера для сортировки. я должен был иметь возможность сортировать бесконечность, отрицательную бесконечность и так называемую «нулевую» (это я определил в начале программы)

например, если пользователь хочет ввести бесконечность, он должен ввести в строку «Pinf».

Моя проблема заключается в том, что я сохраняю пользовательский ввод в std :: string, а затем проверяю, является ли строка «pinf» или «Pinf», даже если я ввел число 3, поэтому строка «3», она все еще идет в if Скажите, что я сделал не так ?!

Мой код ниже;

    string Temp;
cin>> Temp;
if (Temp.find("Pinf")||Temp.find("pinf")) {
Num = Pinfinity;
}

Он думает, что утверждение if верно каждый раз.

0

Решение

Если вы просто ищете Pinf или pinf, то вы можете использовать это. Обратите внимание, логический или оператор ||,

 if (Temp == "Pinf" || Temp == "pinf") {
1

Другие решения

1.Error — вы используете | вместо ||,

2. Ошибка — findвозвращается

Положение первого персонажа первого матча. Если нет совпадений
были найдены, функция возвращает строку :: npos.
Вы должны изменить

if (Temp.find("Pinf")|Temp.find("pinf")) {

в

if ((Temp.find("Pinf") != string::npos) || (Temp.find("pinf") != string::npos)) {
2

| является побитовым или оператором. использование || на месте |

if ( Temp.find("Pinf") != npos || Temp.find("pinf") != npos )
0
По вопросам рекламы [email protected]