我到处寻找,我找到了一个用于PHP而不是c ++。我正在为我的c ++课程中的一个项目制作一个小的控制台RPG,我想避免使用函数和/或如果可能的话 - 但如果不是,我会使用它们。
示例代码:
int main(){
string pName;
string pWpnName;
int pDamage=0;
int wdSwrdD=1;
if (pDamage==wdSwrdD)pWpnName="Wooden Sword";
cout<<"Please enter a name";
cin>>pName;
pDamage++:
cout<<"Name: "<<pName<<endl;
cout<<"Weapon: "<<pWpnName<<endl;
return 0}
但每当我这样做时,它会输出:Name: pName
(就像它应该的那样)和Weapon:
。它只是保持空白,我感觉这与我如何使用字符串有关...
答案 0 :(得分:3)
您不了解命令式语言(以及C ++之一)如何工作的基础知识。程序按语句执行语句,并且您的if
条件仅检查pDamage==wdSwrdD
一次 - 当执行流程通过该语句时。因此,您稍后增加pDamage
这一事实不会神奇地更改pWpnName
(并且您需要将比较运算符==
更改为赋值运算符=
,除此之外的条件,但我认为这是一个错字。)
所以你很可能需要一个循环,其中执行流重复地通过你的if
语句(这是为什么创建循环),但是根据你提供的信息很难说更多。
答案 1 :(得分:1)
您可以使用getline()函数:
cout<<"Please enter a name"<<endl;
getline(cin, pName);
pDamage++;
该函数可以从流中获取一行,将std :: cin设置为steam参数,并为变量分配一行输入。
答案 2 :(得分:0)
你的问题是你犯了一个拼写错误:==
是平等比较,而=
是作业。因此,您的代码部分应该更改:
if (pDamage==wdSwrdD)
pWpnName=="Wooden Sword"; // here you're doing comparison
...为:
if (pDamage==wdSwrdD)
pWpnName="Wooden Sword"; // here you're doing assignment
大多数编译器应该为这种行为生成一个警告,因为它很容易制作,但很难捕获。
答案 3 :(得分:0)
在你的程序中,你没有初始化字符串,你正在为pName获取用户输入,因此它显示了名称。如果pWpnName在声明时没有初始化,并且&#34; if条件永远不会变为真&#34;因为你已经初始化了pDamage = 0和wdSwrD = 1并且我们知道如果(0 == 1)永远不为真,字符串pWpnName永远不会被初始化为Wooden Sword,所以它显示为空白。