if和char语句

时间:2016-03-27 10:37:51

标签: c++ if-statement char

你好这不是我的整个代码,但是我只是在用户输入单词“NewYork”时我需要打印信息,当我调试时,即使我输入单词“NewYork”也没有打印。所以任何人都可以告诉可能是什么问题?谢谢

int main(){

    Panel *panelptr;
    int count,len,wid;
    double heg;
    char locat[30];

    cout<<"how many panels do you need to create ? "<<endl;
    cin>>count;
    panelptr = new Panel[count];
    assert(panelptr!=0);



    for(int i=0; i< count; i++){
        cout << "Enter the length: ";
        cin >>len;
        cout << "Enter the width: ";
        cin >> wid;
        cout << "Enter the height: ";
        cin >> heg;
        cout<<"Enter the location: ";
        cin >>locat;
        panelptr[i].setPanel(len,wid,heg,locat);

        if(locat == "NewYork")
            panelptr->print();

    }


    delete [] panelptr;
    system("pause");
    return 0;
}

3 个答案:

答案 0 :(得分:2)

您正在将char数组与字符串进行比较。使用strcmp()进行比较:

if (strcmp(locat, "NewYork") == 0) {
}

答案 1 :(得分:2)

您无法像使用if(locat == "NewYork")那样比较字符数组。您有两种选择:

1)使用strcmp()

#include <cstring>
int main()
{
    char locat[30];

    if (strcmp(locat, "NewYork") == 0)
    {
        // Do what you like.
    }
}

2)使用string

#include <string>
int main()
{
    std::string locat;

    if (locat == "NewYork")
    {
        // Do what you like.
    }
}

答案 2 :(得分:0)

对于字符串比较,您应使用strcmp()函数代替==。你正在使用的只是比较两个char*,你不能指望它们是相同的 因此,请从

更改您的代码
if(locat == "NewYork")
     panelptr->print();

if(strcmp(locat, "NewYork") == 0)
     panelptr->print();

strcmp()string.h标头中定义,因此包含 您的计划中的#include<string.h>