c-风格字符串和string类型的字符串的异同

       c-风格字符串的比较:

        给大家先看一个程序   

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
   char word[50]="?ate";
   for(char ch='a';strcmp(word,"mate");ch++)
  {
   cout<<word<<endl;
  word[0]=ch;
  }
   cout<<"after loop ends,word is"<<word<<endl;
   return 0;
}
        结果:

        

      分析:strcmp()是c++库中的函数,该函数接受两个字符串地址(指针、字符串常量、字符数组名等)作为参数,若两个字符串相同,该函数返回零,若第一个字符串按字母顺序排在第二个字符串之前,该函数返回一个负数值,相反,则返回一个正数。

      c-风格的字符串常量表示地址!!!这是最重要的

       所以,word=="mate",这个关系式并不是判断两个字符串是否相同,而是查看他们是否存储在相同的地址上。所以对c-风格的字符串使用关系运算符来比较他们,会无法得到满意的答案。

       C-风格字符串是以空字符null结束的字符数组。


      string类型的字符串:

  

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
   string word="?ate";
   for(char ch='a';word="mate");ch++)
  {
   cout<<word<<endl;
  word[0]=ch;
  }
   cout<<"after loop ends,word is"<<word<<endl;
    return 0;
}
    结果:


     分析:关系运算符“!=”左边是一个string对象,右边是一个c-风格的字符串,string类重载了“!=”,让我们能在下述条件下使用他:至少要给操作数是string对象,另一个操作数可以是string对象,也可以是c-风格的字符串。

     注:第一个程序,结果显示和程序不一样,是因为我后面把程序改了一下。

 


  

    


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值