2016-11-18 103 views
-3
char gamerCentral::getGamerTag() 
{ 
    switch(gamerTag) 
      { 

     case '1': return gamerTag = "Diamond"; 
        break; 
     case '2': return gamerTag = "Silver"; 
        break; 
     case '3': return gamerTag = "Bronze"; 
        break; 
     case '4': return gamerTag = "Wood"; 
        break;  
     default: return gamerTag = "Uninstall"; 

     break; 
      } 

char gamerTag; 

GamerClub::GamerClub(
     char tag) 
    { 
    gamerTag = tag; 


} 

我试图返回gamerTag,但它说它不能转换为字符串。他们是一种将char转换为switch语句内的字符串的方法吗?Switch语句不会打印字符串

+2

好像[XY的问题](http://xyproblem.info /)。为什么不使用字符串类型来存储字符串? – MikeCAT

+0

你应该改变你的函数的签名。 char是char,在这里你需要比'char'更大的东西。最近会是一个'const char *',如果你想看更多的话,你可以看看[这里](http://stackoverflow.com/questions/7352099/stdstring-to-char)。 –

+0

你如何期望能够将一个完整的字符串分配给一个简单的'char'变量? –

回答

3

让你的函数返回一个字符串,它仍然可以对单个字符作为输入进行操作。这是一个例子。

std::string getGamerTag(char t) 
{ 
    switch(t) 
    { 
     case '1': return "Diamond"; 
     case '2': return "Silver"; 
     // ... 
    } 

    return ""; 
} 

// prints "Silver" 
cout << getGamerTag('2'); 
+0

串gamerCentral :: getGamerTag(炭玩家代号) { 开关(玩家代号) { 壳体 '1':返回玩家代号= “钻石”; case'2':return gamerTag =“Silver”; 情况'3':return gamerTag =“青铜”; case'4':return gamerTag =“Wood”; 默认值:return gamerTag =“卸载”; } – theDon

+0

这就是我所说的,它仍然不会转换。 – theDon

+0

我还不清楚我做错了什么...... – theDon

0

使用字符串变量,或者使用字符*

char* getGamerTag(int t) 
{ 
    switch(t) 
    { 
     case 1: return "Diamond"; 
     case 2: return "Silver"; 
    } 
} 
int main() 
{ 
    cout << getGamerTag(2); 
} 
0

我建议使用一个字符串数组:

std::string getGamerTag(unsigned int t) 
{ 
    static const char * tag_names[] = 
    { 
    "Diamond", "Silver", "Bronze", "Wood", "Unistall", 
    }; 
    static const unsigned int name_quantity = 
    sizeof(tag_names)/sizeof(tag_names[0]); 

    std::string name; 
    if ((t > 0) && (t <= name_quantity)) 
    { 
    name = tag_names[t - 1]; 
    } 
    return name; 
}