3

使用 VS 2012。

我在做刽子手。无论如何,我有一个函数来获取一个与当前猜测的单词长度相同的 std::string,但用下划线填充。(如,空白)。

功能:

std::string getBlankWord(std::vector<std::string> words, int currentWordIndex)
{
    return std::string(words[currentWordIndex], '_');
}

调用它的行:

currentGuessingString = getBlankWord(words, index);

words 是 std::vector,index 是 int。words.size() = 22 和 index = 0,所以我不知道如何调用,在这种情况下,words[0] 可能是罪魁祸首。无论如何,这一行的某些东西会引发 std::out_of_range 异常,但我找不到它。

谢谢。

4

2 回答 2

5

我认为你真正想要的更像是:

return std::string(words[currentWordIndex].size(), '_');
于 2013-03-18T22:10:44.930 回答
4

出现您的问题是因为最终被调用的构造函数是子字符串构造函数(请参见此处

第一个参数很容易弄清楚,但是第二个参数将是一个 char,其 ascii 值 '_' 隐式转换为 size_t 并且它的值很可能大于您提供给构造函数的字符串的大小这反过来又会导致你的问题

于 2013-03-18T22:16:27.523 回答