使用C ++中的循环创建顺序变量名称

问题描述 投票:2回答:4

我正在尝试使用循环创建变量名。

特别是,我正在使用此结构:

struct card{
    string rank;
    string suit;
};

这是我剩下的代码,上面写着“ card + i”的地方就是我要说“ card1”或“ card2”等的地方

string aSuit[4] = {" Hearts"," Clubs"," Diamonds"," Spades"};
string aRank[13] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
string aDeck[52];

int main(int argc, char *argv[])
{
    int i = 0;
    for (int s=0; s<4; s++) {
        for (int r=0; r<13; r++) {
            card card+i;
            card+i.rank = aRank[r];
            card+i.suit = aSuit[s];
            cout << card + i.rank << card + i.suit << endl;
            i++;
        }
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
c++ arrays loops variables structure
4个回答
3
投票

使用数组代替:

card cards[52];

int main(int argc, char *argv[])
{
    int i = 0;
    for (int s = 0; s<4; s++) {
        for (int r = 0; r<13; r++) {
            cards[i].rank = aRank[r];
            cards[i].suit = aSuit[s];
            cout << cards[i].rank << cards[i].suit << endl;
            i++;
        }
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}

2
投票

思考这是最好的解决方案,但我可以向您保证,不是。从逻辑和维护的角度来看,将逻辑与变量名绑定是一个不好的主意。您真正想要的是一个可以将一个数据(在这种情况下为字符串)与另一个数据关联的集合。

查看类似map的数据结构>


0
投票

这是不可能的。当您编译C ++程序时,任何变量名的概念都将完全消失。它无法在运行时生成变量名,因为它们根本不存在。


0
投票

您需要为此使用数组,它们允许单个变量包含一组项目。

© www.soinside.com 2019 - 2024. All rights reserved.