字符串下标超出范围错误

string subscript out of range error

本文关键字:范围 错误 下标 字符串      更新时间:2023-10-16

嘿,我对这段代码有问题。我已经阅读了一些关于它的问题,但我在我的代码中找不到问题。如果可以的话,帮帮我。

#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();
}

当我没有数组时,我忘记了字符串的那个小东西。

您正在读取slowo中的索引slowo.size(),但将其下标为从0开始,因此slowo只能从0索引到slowo.size()-1。您需要将状况更改为

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

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

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

应该是:

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