c – std :: string构造函数抛出std :: out_of_range异常
作者:互联网
使用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异常,但我无法找到它.
谢谢.
解决方法:
出现问题是因为最终被调用的构造函数是子字符串构造函数(参见here)
第一个参数很容易弄明白,但第二个参数将是一个char,其ascii值为’_’隐式地转换为size_t,其’值很可能大于你给构造函数的字符串的大小这反过来会导致你的问题
标签:c,exception,stdstring 来源: https://codeday.me/bug/20190723/1510190.html