char型数组怎么排序,最好用sort,并希望解释下面排序为什么不对

#include<cstdio> #include<algorithm> #include<iostream> #include<cmath> using namespace std; int main() { char * name[]={"Folle me","BASIC","Great Wall","FORTRAN","Computer design"}; int n=5,i; sort(name,name+5); for(i=0;i<n;i++) printf("%s\n",name[i]); return 0; }

第1个回答  2019-12-07
你这是char型的二维数组,不能这么排序。
用string类吧。或者你写个结构体作为字符串,然后重载一下小于号
struct
str{
char
s[100];
}name[10];
bool
operator
<(str
a,str
b){
for
(int
i=0;i<strlen(a)&&i<strlen(b);i++){
if
(a[i]<b[i])
return
1;
if
(a[i]>b[i])
return
0;
}
return
strlen(a)<strlen(b);
}
然后你赋值后,就调用sort(name,name+5)就ok
相似回答