nested if — вложенные проверки if с переполнением стека

Может быть, мой код небрежный, но по какой-то причине он просто проходит через все вложенные проверки If, не останавливаясь, чтобы проверить ответ, кроме первого. Кроме того, первая проверка If переходит к вложенному If for True независимо от того, что даже если я даю неверный ответ. Я довольно новичок в C ++, так что, мне чего-то не хватает?

#include <iostream>
#include <string>

using namespace std;

int main()
{
cout<<" \n";
cout<<"UUU   UUU   RRRRRRR   TTTTTTTTT  HHH  HHH\n";
cout<<"UUU   UUU   RRR  RRR     TTT     HHH  HHH\n";
cout<<"UUU   UUU   RRRRRRR      TTT     HHHHHHHH\n";
cout<<"UUU   UUU   RRR  RRR     TTT     HHH  HHH\n";
cout<<" UUUUUUU    RRR   RRR    TTT     HHH  HHH\n";
cout<<" \n";
cout<<"           Created by: Illyduss\n";
cout<<"                     2015\n";
cout<<" \n";
cout<<" \n";
cout<<" \n";
int account;
cout<<"Do you already have an account? \n";
cout<<"Type 'New' to create an account or enter your account name.\n";
cout<<"Account Name: ";
cin>> account;
cin.ignore();
if (account = "New" or "NEW" or "new"){
string surname;
cout<<" \n";
cout<<"Account names serve as the Surname or Last name for\n";
cout<<"all characters linked to said account. This is beca\n";
cout<<"use of our unique gene pool system. Which will be c\n";
cout<<"overed more in depth later on, but for now just thi\n";
cout<<"nk of it like this, an account is a family tree for\n";
cout<<"all of your characters.\n";
cout<<" \n";
cout<<"Please enter your desired Surname Name: ";
cin>> surname;
cin.ignore();
if (surname.length() > 2){
cout<<" \n";
cout<<"You have chosen, '" << surname << "' as your surname, correct? ";
}
else {
cout<<"That is too short, please choose another surname: ";
}
}
else {
cout<< "Welcome back, '" << account << "'!\n";
cout<<"Please enter your password: ";
}
cin.get();
}

-1

Решение

Прежде всего вы пытаетесь использовать объект типа int что для ввода строки, а затем вы пытаетесь сравнить этот объект со строковыми литералами, используя неправильное условие и оператор присваивания

if (account = "New" or "NEW" or "new"){
^^

Вы должны определить account как имеющий тип std::string и в этом случае состояние может выглядеть

if (account == "New" or account == "NEW" or account == "new"){

но в любом случае было бы лучше конвертировать account используя некоторый промежуточный объект в верхний регистр. В этом случае условие будет выглядеть проще.

2

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


По вопросам рекламы [email protected]