提问者:小点点

当回答==true时如何使void不返回


我做了这个程序,当我输入“是”,它应该结束我的程序,而不是它等待我说更多的东西,然后它来了我的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;
}

共1个答案

匿名用户

虽然可以工作,但它只是一个函数调用,因为调用方和被调用函数都没有返回值。你不能以任何方式改变流量。您必须使用控制流的函数返回的结果。例如。

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;
}

还有预定义的函数用于退出程序。