我的Hangman游戏程序存在这个巨大的问题,字符串超出范围" ...
我可以解释的是,字符串中的某些内容显然是无限数字,而且,它无法存储您输入的字母以供猜测。
这是我的Hangman代码:(有关详细信息)
#include <iostream>
#include <string>
using namespace std;
string Palabra;
int main() {
cout << "Bienvenido a 'Hangman'\n\nPor favor, entre su palabra para
adivinar: ";
getline(cin, Palabra);
一些不错的介绍;
我试图获取(用户输入&#34; Word或短语&#34;)以继续下一部分。
int misses = 0;
int exposed = 0;
string display = Palabra;
for (int i = 0; i < display.length(); i++)
display[i] = '_';
&#34;未命中&#34;是失败的数量
&#34;循环用于&#34;根据Word的长度,这些将由Underline char替换。 (Palabra与Display相同)
在此之后,有些是不言自明的......但我仍然会解释。
当你正确猜出一个字母时,下划线(显示)将填满用户输入的字母(Palabra)
如果你再说一遍,它会告诉你,Word(Palabra)中已存在该字母
如果你没有猜到一封信,它会告诉你&#34;那封信不存在&#34;在单词
如果你完全失去了所有六次尝试,它会显示出应该猜测的单词。
while (exposed < Palabra.length()) {
{ cout << "Miss: " << misses << ": ";
cout << "Adivina las " << display << " letras de la palabra o frase.\nTienes " << misses << " intentos.";
char response;
cin >> response;
bool goodGuess = false;
bool duplicate = false;
for (int i = 0; i, Palabra.length(); i++)
if (response == Palabra[i])
if (display[i] == Palabra[i])
{
cout << response << " esta en la palabra ya.\n";
duplicate = true;
break;
}
else {
display[i] = Palabra[i];
exposed++;
goodGuess = true;
}
if (duplicate)
continue;
if (!goodGuess) {
misses++;
{
cout << response << " no esta en la palabra.\n";
}
}
cout << "Si, la palabra fue " << Palabra << "." << endl;
return misses;
}
}
system("pause");
}
我可以确认它在[getline(cin,Palabra)]之后有效,但是当我输入一个字母(用于猜测)时,&#34;字符串子标记的错误超出范围&#34;出现!
这里发生了什么?