使用VS 2012。
我正在制作刽子手。无论如何,我有一个函数来获取一个std :: string,其长度与猜测的当前单词的长度相同,但是用下划线填充。 (如,空白)。功能:
std::string getBlankWord(std::vector<std::string> words, int currentWordIndex)
{
return std::string(words[currentWordIndex], '_');
}
调用它的行:
currentGuessingString = getBlankWord(words, index);
单词是std :: vector,index是int。 words.size()= 22,index = 0,所以我不知道如何调用,在这种情况下,单词[0]可能是罪魁祸首。无论如何,这一行上的某些内容会抛出std :: out_of_range异常,但我找不到它。
感谢。
答案 0 :(得分:5)
我认为你真正想要的更像是:
return std::string(words[currentWordIndex].size(), '_');
答案 1 :(得分:4)
出现问题是因为最终被调用的构造函数是子字符串构造函数(请参阅here)
第一个参数很容易弄明白,但第二个参数将是一个字母,其中ascii值为'_',隐式地转换为size_t,其'值很可能大于您给出的字符串的大小构造函数反过来导致你的问题