0

将字符串的反转分配给另一个字符串时遇到错误。

[错误] 将 'char*' 分配给 char[20] 时类型不兼容

这是我的代码

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
    char str[20],str2[20];
    int length;
    cout<<"Enter the string\n";
    cin>>str;
    length=strlen(str);
    str2=strrev(str);
    if(str==str2)
    {
        cout<<"Palindrome"; 
    }
    else{
        cout<<"Not a palindrome";
    }
    return 1;
}

关于我做错了什么的任何解释都会非常有帮助。干杯

4

2 回答 2

2

正如其他人所建议的那样,一个简单的解决方案是使用std::string而不是char [20],然后您可以调用方法reverse()来完成这项工作。

这是我的简单代码:

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
    std::string str, str2;

    std::cout << " Please Enter The String : \n";
    std::cin >> str;    

    str2 = str;
    
    reverse(str.begin(), str.end());
    
    if( str == str2 )
        std::cout << "Palindrome"; 
    else
        std::cout << "Not a palindrome";

    return 0;
}

我已经测试并验证了代码是否有效。

于 2021-07-04T20:32:00.483 回答
0

strrev 是一个非标准的 C 函数,它可以就地反转。所以这个任务没有意义。strcpy + strcmp 可能是合适的。

既然你标记了这个 c++ 你真的想使用 std::string 来使事情更简洁。

#include<string>
#include<iostream>
#include<algorithm>
int main(){
    std::string in1, palindrome;
    std::cin >> in1;
    palindrome = in1;
    // reverse palindrome with std::reverse
    // compare with == for like contents. 
}
于 2021-07-04T20:30:51.263 回答