在抛出out_of_range的实例后调用terminate



我正在尝试对输入字符串进行回文检查,这意味着:

`"Anna"` returns `true`,
`"ada"` returns `true`,
`"1ada1"` return `true`

"ABJKkjBa"返回true,

空格和符号(如",.[];")不计算在内。只比较字母和数字。

这是我的程序:

int main()
{
    string input;
    getline(cin,input);
    if(isPalindrome(input))
        cout << "it is palindrome phase, or words." << endl;
    else
        cout << "it's not palindrome phase, or words." << endl;
    return 0;
}
bool isPalindrome(string input)
{
    string TemStore_1; //only letter, number will be store in here.
    string TemStore_2; //storing TemStore_1 data other way around.
    for(int i=0;i<input.length();i++)
    {
        if((input.at(i)<58) && (input.at(i)>47)) //catching number from 0-9
            TemStore_1+=input.at(i);
        if((input.at(i))<123 && (input.at(i)>96)) //catching letter from a-z
            TemStore_1+=input.at(i);
        if((input.at(i)<91) && (input.at(i)>64)) //catching letter from A-Z, and change it to a-z
        {
            input.at(i)+=32;
            TemStore_1+=input.at(i);
        }
    }
    for(int j=TemStore_1.length();j>-1;j--)   //backwards writing the TemStore_1 into  TEmStore_2
    {
        TemStore_2+=TemStore_1.at(j);
    }
    if(TemStore_1==TemStore_2)
        return true;
    else
        return false;
}

最后我得到了超出范围的错误。。。不知道哪一部分出了问题。。

此循环:

for(int j=TemStore_1.length();j>-1;j--)

TemStore_1.length()开始,这在与TemStore_1.at(j)一起使用时导致out_of_range

这是我注意到的第一个错误;这可能不是代码中唯一的错误。

最新更新