字符串palindrom在string.size()上给出了错误答案,但在string.size()上给出了正确答案 - 1

时间:2015-07-02 18:43:58

标签: c++ string c++11 procedural-programming

这是一个程序,它找到用户输入的字符串的反向并告诉它是否是一个回文....现在的问题是它在for循环时正确地反转字符串我用大小初始化()-1 ...但是当我用size()初始化时它错过了一个字符。为什么会这样?

  //palindromee
  #include <iostream>
  using namespace std;
  int main()
  {
   string s;
   string s1;

   cout<<"Enter something:  ";
   cin>>s;
   s1.assign(s);
   int k=0;
   for(int i = s.size()-1  ; i>=0 ; i--)
           //why correct ans reversing on size()-1?
   {       // and wrong ans on size()
        s1[k]=s[i];
        k++;
   }
    cout<<"string s= "<<s;
    cout<<"\nstring s1= "<<s1<<'\n';
    int checker=s.compare(s1);
    if(checker == 0)
    {
        cout<<"\n\npalindrome";
    }
    else cout<<"\n NOT A PALINDROME";
   return 0;

}

1 个答案:

答案 0 :(得分:3)

那是因为在c&amp; c ++数组索引基于0。对于字符串类也是如此,其中使用[]运算符访问单个字符,索引是基于0的。数组的长度(或字符串的大小)总是超出它的范围。