字符串下标超出范围错误

时间:2013-10-11 12:02:49

标签: c++ string

嘿,我的代码有问题。我已经阅读了一些有关它的问题,但我在代码中找不到问题。如果你能帮助我,请帮助我。

#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

int main()
{

    cout << "You have 20 attempts";
    string slowo="program";
    char litera;
    unsigned j=0;

    for(int i=0;i<20;i++)
    {
        if (j > slowo.size())j=0;

        litera = _getch();
        for(unsigned z=0;z < slowo.size();z++)
        {
            if (litera==slowo[j])
            {
                cout << slowo[j];
                break;
            }
            else cout << "-";
        }
        //cout << litera;

            j++;
    }getch();
}

当我没有阵列时,我忘记了字符串这个小东西。

2 个答案:

答案 0 :(得分:4)

您正在阅读slowo.size()中的索引slowo,但是从0开始订阅,因此slowo只能从0索引到slowo.size()-1。您需要将条件更改为

if (j >= slowo.size())j=0;

答案 1 :(得分:2)

当字符串长度为4时,表示索引0,1,2,3上有字符,即size() - 1。因此:

if (j > slowo.size()) j=0;

应该是:

if (j >= slowo.size()) j=0;