如何在函数中使用cin? 我是C++新手,我正在尝试制作一个简单的基于文本的游戏。下面的代码是假定的 欢迎用户加入游戏,询问用户是否想开始游戏。我没有得到任何构建错误,但当我运行它时,它显示的只是一个空白屏幕。我到底做错了什么

如何在函数中使用cin? 我是C++新手,我正在尝试制作一个简单的基于文本的游戏。下面的代码是假定的 欢迎用户加入游戏,询问用户是否想开始游戏。我没有得到任何构建错误,但当我运行它时,它显示的只是一个空白屏幕。我到底做错了什么,c++,function,C++,Function,代码如下: string D1(string Original) { cin >> Original; return Original; } int main () { string Decision1; cout << "Welcome to [game name]" << endl; cout << "Would you like to start the game?" << endl;

代码如下:

string D1(string Original)
{
    cin >> Original;
    return Original;
}

int main ()
{
    string Decision1;
    cout << "Welcome to [game name]" << endl;
    cout << "Would you like to start the game?" << endl;
    cout << "Yes/No" << endl;
    string D1(Decision1);
    system("cls");
    if (Decision1 == "Yes")
    {
        cout << "this happens" << endl;
    }
    else if (Decision1 == "No")
    {
        cout << "that happens" << endl;
    }
}
字符串D1(原始字符串)
{
cin>>原创;
归还原件;
}
int main()
{
字符串决策1;
库特
现在,程序将复制您传递的字符串并将其放入
原始
,因此当您退出函数时,
决策1
将不会发生任何变化

你想让它做的是

通过引用传递变量意味着函数接收的不是传递内容的副本,而是您传递的实际变量(想象一个巫毒娃娃)。您对函数中的变量所做的任何操作都将对传递的变量生效

将函数标题更改为:

string D1(string &Original)
字符串D1(字符串原件)
应该是
字符串D1(字符串原件)
(即:带引用传递)

字符串D1(Decision1);
main中的
应为

D1(决定1);
因为


stringD1(Decision1);
实际上声明了一个名为
D1
(与函数同名)的新字符串变量,并使用
Decision1
的值对其进行初始化。您必须调用
D1
,而不是创建一个名为
D1
的新变量:

std::string D1()
{
    std::string Original;
    std::cin >> Original;
    return Original;
}

int main ()
{
    std::cout << "Welcome to [game name]" << std::endl;
    std::cout << "Would you like to start the game?" << std::endl;
    std::cout << "Yes/No" << std::endl;
    auto Decision1 = D1();
    system("cls");
    if (Decision1 == "Yes")
    {
        std::cout << "this happens" << std::endl;
    }
    else if (Decision1 == "No")
    {
        std::cout << "that happens" << std::endl;
    }
}
std::string D1()
{
std::原始字符串;
标准::cin>>原创;
归还原件;
}
int main()
{
std::cout这句话

string D1(Decision1);
是由object
Decision1
初始化的名为
D1
的类型为
std::string
的对象的定义。当object
Decision1
为空且object D1为空时

你的意思是

void D1( string &Original )
{
    cin >> Original;
}

//...

D1( Decision1 );
string D1()
{
    string Original;
    cin >> Original;
    return Original;
}

//...

Decision1 = D1();
或以下

void D1( string &Original )
{
    cin >> Original;
}

//...

D1( Decision1 );
string D1()
{
    string Original;
    cin >> Original;
    return Original;
}

//...

Decision1 = D1();
考虑到如果使用两个if语句

if (Decision1 == "Yes")
{
    cout << "this happens" << endl;
}
else if (Decision1 == "No")
{
    cout << "that happens" << endl;
}

P.S.在评论中,有人建议使用“编程——使用C++的原理和实践”。我不建议初学者用这本书,实际上它是初学者的一本坏书。你会花很多时间阅读这本书,但是你的C++知识将接近零。

你知道你可以格式化你的代码吗?缩进有4个空格(没有标签),这将更容易阅读。你可以从一本关于C++的书开始……(不应该)。我强烈推荐一本书,比如编程——C++的原理和实践。它将解释所有的这些东西。把函数头改为字符串D1(字符串和原件)。它仍然会出现一个空白屏幕