【发布时间】:2021-07-04 20:08:25
【问题描述】:
在将一个字符串的反转分配给另一个字符串时遇到错误。
[错误] 将 '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;
}
任何关于我做错了什么的解释都会非常有帮助。 干杯
【问题讨论】:
-
str2=strrev(str);str2 是一个数组。 strrev() 的返回是指针而不是数组。您不能分配数组,也不会从 char 指针复制。 -
您通过混合 c 和 c++ 使事情变得不必要地复杂化。在 C++ 中使用
std::string和std::reverse -
std::string str;...if (str == std::string(str.rbegin(), str.rend()) { palindrome } else { not palindrome } -
使用
string.h而不是string(甚至cstring会稍微好一点)表明教程很差。扔掉你正在使用的任何教程,然后找到一个现代的 C++ 教程。如果你的 C++ 老师告诉你使用string.h,那么也把它们扔掉。 -
是的,
std::string是在 C++ 中存储字符串的正确方法。您之前使用的函数(strlen和strrev)是不能用于 C++ 字符串的 C 函数。阅读std::string并使用与它一起工作的功能。混合使用 C 和 C++ 只会带来灾难。
标签: c++