如何将std::string的单个字符存入vector<std::string>类型容器?
问题根因
你触发类型报错的核心原因是类型不匹配:
secretWord定义为vector<string>类型,该容器的每个元素都是完整的字符串对象word[index]取出来的是单个char类型字符,无法直接赋值给需要string类型参数的push_back方法
解决方案
方案1:不修改现有成员变量类型,转换char为string
把报错的push_back行修改为以下代码,将单个char构造成长度为1的string对象再存入容器:
secretWord.push_back(string(1, word[index]));
方案2(更推荐):调整secretWord的定义类型
单个字符存储用vector<char>更合理,直接修改类内secretWord的定义即可:
// 原来的定义 // vector<string> secretWord; // 修改为 vector<char> secretWord;
修改后你原来的secretWord.push_back(word[index]);代码可以直接正常运行,无需额外转换,还能减少不必要的内存开销。
额外问题修复
你当前代码里的随机数逻辑存在数组越界风险:
int random = (rand() % dictionary.size()) + 1;
C++中vector下标从0开始,有效范围是0 ~ dictionary.size()-1,你加1后会出现取到dictionary.size()下标的情况,访问该下标属于非法内存访问,会直接导致程序崩溃,把末尾的+1删掉即可:
int random = rand() % dictionary.size();
内容的提问来源于stack exchange,提问作者muhammad muzaib
相关产品推荐
相关产品推荐

