刚开始使用c ++,我正在制作二十一点。我已经设置了这么一个玩家的手是一串牌,例如:手[1] =❤2手[2] =❤J
我已经创建了一个功能,可以将卡阵列中所有卡的值相加,但我遇到了一个问题:
int handValue(string hand[]){
int handSum;
//returns value of total amount of cards in hand+1
int numCards = nextCard(hand);
string value;
for (int i = 0; i < numCards ; i++){
//Checks the second character of a card to find a value (1,2,3...T,J,Q,K)
string value = hand[i][1];
if (value == "T" || value == "J"|| value == "Q" || value == "K") {
handSum += 10;
}
}
return handSum;
}
这条线是我遇到问题的地方:
string card = hand[i][1];
产生错误:
从'char'到'const char *'的转换无效。
为什么我收到此错误以及如何解决?谢谢!
答案 0 :(得分:0)
小心注意变量的types
。 c ++是一种strongly typed
语言,用于区分one char
和an array of chars
之间的区别。不要被const char *
弄糊涂......把它想象成你的阵列。
char fullValue[] = hand[i]; //gets the element at position i
char oneLetter = fullValue[1]; //gets char 1 from our fullValue array
答案 1 :(得分:0)
hands[i][1]
返回char
,std::string
类的构造函数不会将char
作为参数。
此处不需要字符串,您只需使用char
类型:
char value = hands[i][1];
if (value == 'T' || value == 'J'|| value == 'Q' || value == 'K')
handSum += value;