我正在尝试使用循环创建变量名。
特别是,我正在使用此结构:
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;
}
使用数组代替:
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;
}
您思考这是最好的解决方案,但我可以向您保证,不是。从逻辑和维护的角度来看,将逻辑与变量名绑定是一个不好的主意。您真正想要的是一个可以将一个数据(在这种情况下为字符串)与另一个数据关联的集合。
查看类似map的数据结构>
这是不可能的。当您编译C ++程序时,任何变量名的概念都将完全消失。它无法在运行时生成变量名,因为它们根本不存在。
您需要为此使用数组,它们允许单个变量包含一组项目。