无法在C ++中输入字符串

时间:2013-07-21 18:37:24

标签: c++ string function variables

我是编程新手,我只能使用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。我确实包含了字符串库和命名空间。

4 个答案:

答案 0 :(得分:6)

void main()是非法的。它必须是int main(),但有些编译器会错误地接受void main()

if(weapon = "A")
{
weapon == "sword";
}

看起来你倒退了。无论用户输入什么,单operator=weapon设置为常量"A"。比较operator==weapon与常量"sword"进行比较,并立即丢弃该结果。也许您打算在ifif的正文中使用比较?

答案 1 :(得分:5)

您在需要=的地方使用==,反之亦然。应该是:

if(weapon == "A") { weapon = "sword"; }

答案 2 :(得分:1)

至少在我阅读时,你的代码含糊不清:

void f() { 
    string weapon;
    cout << weapon;
}

int main(){ 
    string weapon = "sword";
    f();
}

...问题在于,当您致电weapon时,您mainf分配的值未被使用。

假设大致正确,你所看到的是正常的预期行为。您在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 ++编程的书。