如何在函数中使用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);
是由objectDecision1
初始化的名为D1
的类型为std::string
的对象的定义。当objectDecision1
为空且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(字符串和原件)。它仍然会出现一个空白屏幕