我正在使用Go Fish作为类项目。在这段代码中,我试图采取从球员卡的面值,并把它转换成它的INT数值(2 - 10,J = 10,Q = 11 ...)将char *与字符串文字进行比较的问题
char valued[10];
cin.clear();
cin.ignore(INT_MAX, '\n');
cout << "What card would you like to ask " << _otherplayers[IndexOfPlayerChoice]->GetName() << " for? (2-10, J, Q, K, A) ";
cin >> valued;
int size = strlen(valued) +1;
char * temp = new char[size];
strcpy_s(temp, size, valued);
if (temp == "J" || temp == "j")
value = 11;
if (temp == "Q" || temp == "q")
value = 12;
if (temp == "K" || temp == "k")
value = 13;
if (temp == "A" || temp == "a")
value = 14;
if (temp == "2" || temp == "3" || temp == "4" || temp == "5" || temp == "6" || temp == "7" || temp == "8" || temp == "9" || temp == "10")
value = int(temp);
然而当我运行代码时,它永远不会落入任何if语句中。在调试器中它将显示temp =“A”,但是当它到达if语句时,它将评估为false。
任何想法为什么会发生这种情况?
编辑:尝试使用STRCMP这样
if (strcmp(temp, "J") == 0 || strcmp(temp, "j") == 0)
value = 11;
if (strcmp(temp, "Q") == 0 || strcmp(temp, "q") == 0)
value = 12;
if (strcmp(temp, "K") == 0 || strcmp(temp, "k") == 0)
value = 13;
if (strcmp(temp, "A") == 0 || strcmp(temp, "a") == 0)
value = 14;
else
value = int(*temp);
但STRCMP说,他有一个错误读取字符串文字,我比较。
你在这里没有使用'std :: string' n你的代码,只是'char *'?!?你还有什么问题吗? –
@πάνταῥεῖ他将char *与字符串文字 –
进行比较时遇到问题,您无法将字符串与此'== ==运算符 – mangusta