Я сделал эту программу, и когда я набираю «да», она должна завершить мою программу, вместо этого она ждет, пока я скажу что-то еще, а затем приходит с моим void nottrue(); что мне делать, чтобы этого избежать? Вот мой код
#include <iostream>
using namespace std;
void CharacterWorld();
void nottrue();
int main()
{
CharacterWorld();
nottrue();
return 0;
}
void CharacterWorld()
{
string CharacterName;
int CharacterAge;
string yesorno;
cout << " Hi, welcome to the Vanish World! " << endl;
cout << " What's your name champion? " << endl;
cin >> CharacterName;
cout << " ...And what's your age? " << endl;
cin >> CharacterAge;
cout << " ... So your name is " << CharacterName << " and your age is " << CharacterAge << " Is that right?" << endl;
cin >> yesorno;
if (yesorno == "yes")
{
cout << " Okey! so let's start your journey champion!" << endl;
}
else
{
cout << " SO what's your name then ??" << endl;
return nottrue();
}
}
void nottrue()
{
string CharacterName;
int CharacterAge;
string yesorno;
cin >> CharacterName;
cout << " and what's your age?" << endl;
cin >> CharacterAge;
cout << " ...Okey, already. Your name is " << CharacterName << " and your age is " << CharacterAge << endl;
}
Хотя return nottrue()
работает, это не что иное, как вызов функции, потому что и вызывающая, и вызываемая функции не имеют возвращаемого значения. Вы никак не измените поток.
Вы должны использовать результаты, возвращаемые функцией, для потока управления. Например.
bool CharacterWorld()
{
//...
if (yesorno == "yes")
{
cout << " Okey! so let's start your journey champion!" << endl;
return true;
}
else
{
cout << " SO what's your name then ??" << endl;
return false;
}
}
int main()
{
if (!CharacterWorld())
nottrue();
return 0;
}
Также есть предопределенная функция exit() для выхода из программы.
return nottrue();
вызываетnottrue()
и завершает работу,void
не является ни значением, ни результатом. конечно, вам снова позвонятnottrue()
.