Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在抛出超出\u范围的\u实例后调用terminate_C++_Palindrome - Fatal编程技术网

C++ 在抛出超出\u范围的\u实例后调用terminate

C++ 在抛出超出\u范围的\u实例后调用terminate,c++,palindrome,C++,Palindrome,我正在尝试对输入字符串进行回文检查,这意味着: `"Anna"` returns `true`, `"ada"` returns `true`, `"1ada1"` return `true` “abjkjba”返回true 空格和符号如“,.[];”不计算在内。只比较字母和数字 这是我的节目: int main() { string input; getline(cin,input); if(isPalindrome(input)) cout <

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

`"Anna"` returns `true`,
`"ada"` returns `true`,
`"1ada1"` return `true`
“abjkjba”
返回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;
}
intmain()
{
字符串输入;
getline(cin,输入);
if(isPalindrome(输入))
cout这个循环:

for(int j=TemStore_1.length();j>-1;j--)
开始于
TemStore\u 1.length()
,与
TemStore\u 1.at(j)
一起使用时,会导致
超出\u范围


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

您能在我收到错误时发布它吗?因此,可能是在(I)或(j)处正在访问它不应该访问的内容?因此,在调试器中运行此程序,找出引发异常的原因和超出范围的内容,找出它超出范围的原因,并找出它是如何到达该范围的。我们是不需要的。根据您的要求,您不需要任何额外的字符串,也不需要两个循环来查看一个单词是否是回文。您做得太多了工作。有一件事,我建议你使用
中的
isalpha
isdigit
来查看字符是字母还是数字,而不是使用硬编码的ASCII数字。我不能让第二个for循环,int j等于TemStore\u 1长度??