程序关闭,cin不工作?

时间:2014-12-25 22:20:17

标签: c++ cin

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什么都不产生..?

3 个答案:

答案 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];