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

最終的に呼び出されるコンストラクターが部分文字列コンストラクターであるため、問題が発生します(ここを参照)

最初の引数は簡単に理解できますが、2番目の引数はASCII値'_'が暗黙的にsize_tにキャストされた文字であり、その'値はコンストラクターに指定する文字列のサイズよりも大きい可能性がありますこれが問題の原因になります

于 2013-03-18T22:16:27.523 に答える