char iCharSelect()
{
//CHARACTER CHOICE
cout
<< "\n\n\n Choose Your Stoner:\n\n"
<< "\n 1 = Chris\n"
<< "\n 2 = James\n"
<< "\n 3 = Hunter\n"
<< "\n 4 = Antonio (Alt. Route)\n"
<< "\n\n Enter Character Number: ";
int iChar = INITIALIZED;
cin >> iChar;
//CHARACTER NAME STRING
string sCharName;
//CHARACTER CHECK
if (iChar == 1){sCharName = "Chris";}
else if (iChar == 2){sCharName = "James";}
else if (iChar == 3){sCharName = "Hunter";}
else if (iChar == 4){sCharName = "Antonio";}
else {
cout << "\n\n\n\tYOU GET NOTHING!!";
system("PAUSE>NUL");
//PROGRAM CLOSES HERE-------------------------------------
cout << iChar;
system("PAUSE>NUL");
}
char *chCharName = &sCharName[0];
return *chCharName; }
我做错了什么?该程序在代码中的标记点关闭,并尝试打印iChar什么都不产生..?
答案 0 :(得分:3)
我认为你应该这样做:
if(ichar =='1') 相同的2,3 .. 你这样做的方法是询问插入的char字符是否等于1/2 ..它不相等,所以你得到最后一个“if”语句。
答案 1 :(得分:0)
您正在返回指针return *chCharName;
,但您已将该功能标记为char
。您的一个问题是需要将函数标记为返回char*
char* iCharSelect()
答案 2 :(得分:0)
您的代码的主要问题是,如果chCharName
语句中的所有条件均不为真,则不设置if()
。如果是这种情况,您将尝试返回空字符串的第一个字符,这会导致未定义的行为。
此外,当不需要使用指针时,函数的结尾使用指针。
合理的实施方式如下:
if ( sCharName.empty())
return '\0';
return sCharName[0];