我是编程新手,我只能使用C ++。我一直在研究RPG,由于某种原因,我无法让程序打印出我设置字符串的值。我开始在void main中定义字符串“weapon”。
void main()
{
string weapon;
cin >> weapon;
if(weapon = "A")
{
weapon == "sword";
}
}
我的代码有点像这样,我上面有一个函数,它使用了“武器”(你可以从上面的代码中看到它设置为剑),在我打印出来的东西的末尾,但这是在函数中(在void main之上)所以为了使两者都被定义变量我必须在void main和function中定义它们,但是当我这样做时,程序中什么也没出现它运行了。我把所有内容都写得正确(我上面提到的只是一个例子),但它不会产生错误的唯一方法是在代码的两个部分中定义它。它说其中一个还没有定义,所以我把它定义为函数和void main。为什么不工作?我如何解决它? 感谢
P.S。我确实包含了字符串库和命名空间。
答案 0 :(得分:6)
void main()
是非法的。它必须是int main()
,但有些编译器会错误地接受void main()
。
if(weapon = "A")
{
weapon == "sword";
}
看起来你倒退了。无论用户输入什么,单operator=
将weapon
设置为常量"A"
。比较operator==
将weapon
与常量"sword"
进行比较,并立即丢弃该结果。也许您打算在if
和if
的正文中使用比较?
答案 1 :(得分:5)
您在需要=
的地方使用==
,反之亦然。应该是:
if(weapon == "A") { weapon = "sword"; }
答案 2 :(得分:1)
至少在我阅读时,你的代码含糊不清:
void f() {
string weapon;
cout << weapon;
}
int main(){
string weapon = "sword";
f();
}
...问题在于,当您致电weapon
时,您main
中f
分配的值未被使用。
假设大致正确,你所看到的是正常的预期行为。您在weapon
中定义的main
是与您在weapon
中定义的f
分开的变量。将值分配给1对另一个没有影响。
要获得所需的效果,您需要将值从一个“传递”到另一个作为参数:
void f(string w) {
cout << w;
}
int main() {
string weapon = "sword";
f(weapon);
}
这样,调用f
会为其分配weapon
main
已分配的当前值的副本,因此f
可以使用相同的值。< / p>
答案 3 :(得分:1)
您应该查找在线教程,使用C ++编程。这是一个开始的好地方。或者买一本关于C ++编程的书。