C++如何从array<string>数组中获取随机索引以用于卡牌游戏?
问题原因与解决方案
报错根因
你遇到的编译报错核心是类型不匹配:C++数组的索引必须为整数类型,你将rand() % 52生成的int类型随机值,强行赋值给了string类型的randindex变量,编译器找不到从int转换为string的合适构造函数,因此抛出该错误。
正确实现方式
- 随机数种子
srand只需要在程序启动时调用1次即可,不要每次生成随机数都重复调用,避免短时间内生成重复的随机值 - 随机索引使用int类型存储,不要用string类型
- 你当前的array初始化只填充了前6个元素,剩余46个元素会被默认初始化为空字符串,后续开发需要补全全部52张卡牌的定义
完整可运行的示例代码如下:
#include <iostream> #include <array> #include <string> #include <cstdlib> #include <ctime> using namespace std; int main() { // 全局仅调用1次随机数种子初始化 srand(time(nullptr)); array<string, 52> cards = { "Ess \3", "Ess \4", "Ess \5", "Ess \6","2 \3","2 \4" }; // 生成0-51的合法索引,用int类型存储 int randIndex = rand() % 52; cout << cards[randIndex] << endl; return 0; }
内容的提问来源于stack exchange,提问作者gunnar20008
相关产品推荐
相关产品推荐

