请帮我找出给定编译错误的原因。如果您认为有问题,请向我推荐,因为我是编程新手。
编译错误:
[Error] request for member 'size' in 'a', which is of non-class type 'char [10]'
[Error] request for member 'size' in 'b', which is of non-class type 'char [10]'
我的代码是:
#include<iostream>
#include<string>
using namespace std;
int m,n;
void swap(int* p,int* q)//swap
{
int temp = *p;
*p=*q;
*q=temp;
}
int partition(char a[],int l,int h)//partition
{
int pivot=a[h];
int index=l;
for(int i=l;i++;i<h)
{
if(a[i]<pivot)
{
swap(a[i],a[index]);
index++;
}
}
swap(a[h],a[index]);
return(index);
}
void quick_sort(char a[],int l,int h)//sorting
{
while(l<h)
{
int p_index;
p_index=partition(a,l,h);
quick_sort(a,p_index + 1,h);
quick_sort(a,l,p_index - 1);
}
}
void anargram(char a[],char b[])
{
quick_sort(a,0,m);
quick_sort(b,0,n);
if(m==n)
{
for(int k=0;k<m;k++)
{
if(a[k]!=b[k])
{
cout<<"NO\n";
}
}
cout<<"YES\n";
}
else
{
cout<<"NO\n";;
}
}
int main()
{
cout<<"enter the strings";
char a[10],b[10];
cin>>a;
cin>>b;
m = strlen(a);
n= strlen(b);
anargram(a,b);
return 0;
}
答案 0 :(得分:1)
C样式数组不提供任何成员函数,因为它们是基本类型(因此编译器错误)。
对于这样的数组,您可以使用sizeof(a)
来确定它在其声明的相同范围内的实际大小。
一旦它decayed to a pointer,你无法确定它的实际大小。
由于你的很可能用来表示C风格的NUL终止字符串,你可能想要从输入中使用它们的实际大小,你也可以使用
char a[10],b[10];
cin>>a;
cin>>b;
m = strlen(a);
n= strlen(b);
我建议使用
std::string a(10,0),b(10,0);
代替。