c++primer 课后习题个人解答 part1 4.3

编写程序比较两个 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;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值