У меня есть проблема, которую я вообще не могу понять!
В моей программе пользователь вводит номера для сортировки. я должен был иметь возможность сортировать бесконечность, отрицательную бесконечность и так называемую «нулевую» (это я определил в начале программы)
например, если пользователь хочет ввести бесконечность, он должен ввести в строку «Pinf».
Моя проблема заключается в том, что я сохраняю пользовательский ввод в std :: string, а затем проверяю, является ли строка «pinf» или «Pinf», даже если я ввел число 3, поэтому строка «3», она все еще идет в if Скажите, что я сделал не так ?!
Мой код ниже;
string Temp;
cin>> Temp;
if (Temp.find("Pinf")||Temp.find("pinf")) {
Num = Pinfinity;
}
Он думает, что утверждение if верно каждый раз.
Если вы просто ищете Pinf или pinf, то вы можете использовать это. Обратите внимание, логический или оператор ||
,
if (Temp == "Pinf" || Temp == "pinf") {
1.Error — вы используете |
вместо ||
,
2. Ошибка — find
возвращается
Положение первого персонажа первого матча. Если нет совпадений
были найдены, функция возвращает строку :: npos.
Вы должны изменить
if (Temp.find("Pinf")|Temp.find("pinf")) {
в
if ((Temp.find("Pinf") != string::npos) || (Temp.find("pinf") != string::npos)) {
|
является побитовым или оператором. использование ||
на месте |
if ( Temp.find("Pinf") != npos || Temp.find("pinf") != npos )