关于字符串的问题,如何解决?

问题遇到的现象和发生背景

2048:【例5.18】串排序

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 14817 通过数: 7208
【题目描述】
对给定的n(1≤n≤20)个国家名(国家名字长度不超过20),按其字母的顺序输出。

【输入】
第一行为国家的个数n;

以下n行为国家的名字。

【输出】
n行,排序后的国名。

【输入样例】
3
Korea
China
Japan
【输出样例】
China
Japan
Korea

问题相关代码,请勿粘贴截图

#include
using namespace std;
string s[21];
bool cmp(string A,string B)
{
return A
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;++i)
{
cin>>s[i];
}
sort(s,s+n,cmp);
for(int i=1;i<=n;++i)
{
cout<
}
}

运行结果及报错内容

为什么输出错误?从i=1开始和i=0开始没有什么区别吧?
应该是i=0;ii=1;i<=n;

#include<bits/stdc++.h>
using namespace std;
string s[21];
bool cmp(string A,string B)
{
return A<B;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;++i)
{
cin>>s[i];
}
sort(s+1,s+n+1,cmp);
for(int i=1;i<=n;++i)
{
cout<<s[i]<<endl;
}
}

既然字符串从下标1开始存储,那你sort的时候就应该从s+1到s+n+1啊


可以看下cpp参考手册中的 c++-字符串