不得不说C++的string类真的很好用,string类的字符串的比较跟strcmp的比较的标准差不多,这是网上的回答:
“比较字符串是按照字符串中的字符一个个比较的 只要一个字符不相同 那么就停止比较得出结果
而字符的比较则是比较其Unicode值 而非ascii码值 因为ASCII是不可能容纳下全世界这么多种语言这么多字符的”
而strcmp():
规则
当s1<s2时,返回为负数;
当s1=s2时,返回值= 0;
当s1>s2时,返回正数。
即:两个
字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
#include <iostream>
#include <cstring>
using namespace std;
struct member{
string name,timee;
}minn,maxx;
int main(){
string s,mi,ma;
int T,n;
cin>>T;
while(T--){
cin>>n;
n--;
cin>>s>>minn.timee>>maxx.timee;
minn.name=maxx.name=s;
while(n--){
cin>>s>>mi>>ma;
if(mi<minn.timee){
minn.name=s;
minn.timee=mi;}
if(ma>maxx.timee){
maxx.name=s;
maxx.timee=ma;}
}
cout<<minn.name<<" "<<maxx.name<<endl;
}
}
如果不用字符串比较,那么就要把时间转换为整型
b[i] = ( (a[i].begin[0] - '0' ) *10 +( a[i].begin[1] -'0')) * 3600 + ((a[i].begin[3] - '0') *10 + (a[i].begin[4] -'0')) *60 +( (a[i].begin[6] - '0')*10 + (a[i].begin[7] -'0')) ;
这样在struct数组结构体的基础上还要在定义数组成员,做起来就较麻烦了。(PS:还是要认真啊,开始在最大和最小初始化的时候写成minn.name=maxx.timee=s,因为大脑的思路是对的,所以因为笔误的错误花了很长时间找,敲的时候认真点)