用套装和价值C ++创建卡片组

时间:2013-11-12 21:53:26

标签: c++ string

基本上,我必须生成一副牌,显示西装和价值,如“七心”。我必须使用常量字符串数组,我还必须以某种方式将卡的等级和套装编码为单个整数值。所以我试着将套装和值放在单独的字符串中,然后将它们放在另一个字符串中,但它似乎不起作用。我在“<<”之下得到了红线。

const int numSuit = 4;
const int numCard = 8;

string suits[numSuit] = { "Hearts", "Spades", "Diamonds", "Clubs" };
string cards[numCard] = { "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" };

for ( int i = 0; i < 4; i++ )
{
    for ( int j = 0; j < 7; j++ )
    {
        for ( int k = 0; k < 32; k++ )
        {
            deck[i] = << cards[j] << " of "  << suits[i];

我不明白这有什么问题。

2 个答案:

答案 0 :(得分:3)

首先,你这里只有28张牌。

其次,为什么要将一个额外的图层嵌套深层?

string deck[28];

const int numSuit = 4;
const int numCard = 8;

string suits[numSuit] = { "Hearts", "Spades", "Diamonds", "Clubs" };
string cards[numCard] = { "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" };
int index = 0;
for ( int i = 0; i < 4; i++ )
{
    for ( int j = 0; j < 7; j++ )
    {
            deck[index++] = cards[j] + " of " + suits[i];
    }
}

如果以这种方式运行它,您将能够存储所有28种组合。

我希望我理解你的要求。

你绝对不需要额外的循环。

答案 1 :(得分:2)

尝试:

deck[i] = cards[j] + " of " + suits[i]

<<运算符适用于流,而不是字符串。我们将字符串与+连接起来。

修改:有关<<的更多信息。 <<是一个运算符,(例如+-*等),与所有运算符一样,它需要一个l值(左边的值) )和一个r值(在它的右边)。所以a = << b将不起作用,因为你错过了运营商的l值。