用于if-else的字符串和数字用户输入,接收到错误

时间:2018-06-20 02:01:29

标签: c++ string if-statement

我正在尝试在学校项目的控制台中设置店面模拟。用户通过一些提示,然后有机会“购买耗材”,这是该模块完成后的工作。

现在,我收到有关数据类型的错误消息。 Visual Studio建议我将我的变量设置为布尔值,在这种情况下我不知道该如何解释。我认为一个人很容易看到我要做什么。

您能告诉我如何解决此问题吗?

每个选项的输出均为占位符;我希望用户可以通过针对这5个选项中的每个选项的更多菜单进行访问。

#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <limits>

int main()
{
    int nNumCup = 0, nNumLem = 0, nNumSug = 0, nNumIce = 0;
    std::string sStoreInput01, A, B, C, D;
    std::cout << "You currently have \n"
        << nNumCup << " cups, " << nNumLem << " lemons, " << nNumSug << " cups of sugar and " << nNumIce << " icecubes. \n"
        "If you want to purchase more supplies, you can choose from \n"
        "\n"
        "A) cups \n"
        "B) lemons \n"
        "C) cups of sugar \n"
        "D) icecubes \n"
        "\n"
        "Please make your selection. Otherwise, type 0 to finish shopping. \n";
    getline(std::cin, sStoreInput01);

//Everything above this note is fine; below code is problematic:

    if (sStoreInput01 = 0) {
        std::cout << "return (this feature isn't set up yet)";
    }
    else if (sStoreInput01 = A) {
        std::cout << "Go to Cups";
    }
    else if (sStoreInput01 = B) {
        std::cout << "Go to Lemons";
    }
    else if (sStoreInput01 = C) {
        std::cout << "Go to Sugar";
    }
    else if (sStoreInput01 = D) {
        std::cout << "Go to Ice";
    }
    else
        std::cout << "error";

    return 0;
}

我没有将“ 0”定义为字符串,因为这会导致错误,将其放在引号中没有帮助。

下面的错误,没有显示,但是关于布尔值则是另一回事。 enter image description here

2 个答案:

答案 0 :(得分:4)

需要注意的几件事。 “ =”是赋值运算符,而您需要“ ==”等于运算符。

if(sStoreInput01==0)

这仍然会引发错误,因为sStoreInput01是一个字符串,而0是一个int,但是距离更近。

对于if子句,您似乎需要以下内容:

if(sStoreInput01=="A")

检查输入。

Visual Studio告诉您,您需要将变量设为布尔值,因为if语句需要布尔值表达式。赋值(sStoreInput01 = 0)实际上是与分配给变量的类型相同的表达式。希望能有所帮助。

答案 1 :(得分:1)

好吧,“ =”是赋值运算符,“ ==”是比较数。基本上,您是为字符串分配值0,并且此操作的结果不是布尔值,如果有条件的话,则为布尔值。将“ =”更改为“ ==”,就可以了。

编辑:对不起,没有看到您的评论。例如,尝试使用sStoreInput01.compare(“ A”)。看看是否可行。