如果答复超过1,为什么不作出反应

时间:2014-09-01 05:28:15

标签: c++

如果有多个答案密钥,为什么不起作用:

无法使用密钥

  

if(resp == 'open'

但如果我只用一个字母替换它,那么他可以工作

  

if(resp == 'y'

或用数字替换它,然后他可以工作

  

if(resp == 1

我希望她能写多封信

#include <iostream>

using namespace std;

int main(){
    char resp;
    index:
    cout<<endl;
    cout<<"just an example of course"<<endl;
    cout<<"type {open} to return to the index\n";
    cin>>resp;
    if (resp == 'open'){
        goto index;
    }
    else if(resp == 2)
        {
        return EXIT_SUCCESS;
    }



}

4 个答案:

答案 0 :(得分:4)

使用string代替char

#include <iostream>
#include <string>

using namespace std;

int main(){
    string resp;
index:
    cout<<endl;
    cout<<"just an example of course"<<endl;
    cout<<"type {open} to return to the index\n";
    cin >> resp;
    if (resp == "open"){
        goto index;
    }
    /*
    else if(jawab == 2)
        {
        return EXIT_SUCCESS;
    }
    */
}

答案 1 :(得分:2)

resp的类型为char,因此它只能存储一个字符。

  1. 您可以创建字符串对象,然后直接比较它。 将char resp更改为string resp,然后您可以使用if(resp=="open")
  2. 以下是您编辑的代码:

    #include <iostream>
    
    using namespace std;
    
    int main(){
        string resp; //Fix 1
        int jawab;
        index:
        cout<<endl;
        cout<<"just an example of course"<<endl;
        cout<<"type {open} to return to the index\n";
        cin>>resp;
        if (resp =="open"){ //Fix 2
            goto index;
        }
        else if(jawab == 2)
        {
            return EXIT_SUCCESS;
        }
    }
    

答案 2 :(得分:1)

resp是一个字符而不是字符数组。另外,如果要测试两个字符串是否相同,请改用strcmp(a,b)==0

此外,您应该使用"open"而不是'open'。单引号用于字符,而双引号引用字符串。

答案 3 :(得分:0)

我不确定你的要求是什么。如果要比较两个字符,可以这样做:

char resp;

if (resp == 'o'){...}

但是如果你想比较两个字符串,你应该:

std:string resp;

if (resp.compare("open") == 0){...}