错误:调试断言失败! (字符串下标超出范围)(Hangman Game)

时间:2018-01-22 15:15:35

标签: c++ string c++11 visual-c++

我的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;出现!

这里发生了什么?

0 个答案:

没有答案