编写程序比较两个 string 类型的字符串,然后编写另一个程序比较两个C风格字符串的值。
疑问:c风格字符串是不是只是 1.char 数组 ,最后一位是NULL. 2. 赋值给 char数组 或者 char 指针的字符串常量,如果赋值给string类型则不是。
下面是我的原始代码,标准答案是用了strcmp函数,好笨,刚看就忘。
另外一点标准答案 用的是指针直接去比较,居然也可以,很纳闷,不是比较字符数组么?再去写代码,发现这些函数传入的是需要 const char * 类型。而不是char 数组。
看文档,看到有一句,“如果是C 风格字符串,数组的名字即是指向该数组第一个元素的指针”。 那只能这么理解了,如果不是c风格的,数组名字就是代表数组了。暂时这么理解吧。
后面看到一点 “与普通数组一样,使用多维数组名时,实际上将其自动转换为指向该数组第一个元素的指针。”
说明实际上 用数组名时,实际上就是指针。
int _tmain(int argc, _TCHAR* argv[])
{
string s1="abcd";
string s2="ff";
if(s1==s2)
{
cout<<"yes"<<endl;
}
char gg[]="iloveyou1";
char gs[]="iloveyou2";
char *f=gg;
char *s=gs;
while(true)
{
if((*f==NULL)&&(*s==NULL))
{
cout<<"the same"<<endl;
break;
}
if(*f!=*s)
{
cout<<"not the same"<<endl;
break;
}
++f;
++s;
}
system("pause");
return 0;
}