в ДНК, объект контейнер good не содержит строки "good" - он не инициализирован содержимым с которым его пытаются сравнить, если уж совсем лениво посмотреть под отладкой на содержимое контейнеров - это просто позорище
string name, good,are; cin >> name; cout << "Hello " << name; // "Hello " пробел чтоб name было раздельно с Hello чтоб было Hello Kuki cout << "How are you?
"; cin >> are; // этим можно сказать что ты инициалируешь переменную are то есть задаешь ей значение. // а вот cin >> good или string good = "good"; // или string good("good"); я проверил оба варианта string // good работают. в коде нету и это значит что // if are == good; что ты are сравниваешь неизвестно с чем. // вот и код не работает. string good = "good"; // присвоил переменной good значение. // я привык так, если не работает // используй string good("good") ну можешь любой вариант // который тебе нравится. // теперь сравниваешь! if (are == good) { cout << "Excellent"; } Else { cout << "What happend?"; } system("pause"); return 0; }
изучи классы string это класс. у класса есть конструктор - автоматическая функция, которая вызывается при создании объекта. когда ты пишеш просто string good; вызывается конструктор, который инициализирует объект пустой строкой. чтобы инициализировать правильно надо делать так string good("good"); тут тоже вызывается конструктор, который копирует строку в объект у тебя visual studio, там есть подсказки, какие конструктора у класса есть. можно вообще поставит печатающий курсор на слово string и нажать на f12, тогда откроется документ где находится этот самый string сможешь много нового таким образом узнать
лучше всего good задавать через через переменную, что бы дальше с программой легче было работать. и ещё кое что: там где у тебя "Hello " (пробел поставь) чтобы имя со словом Hello не перемешивалось . удачи