概述
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-风格的字符串。
注:第一个程序,结果显示和程序不一样,是因为我后面把程序改了一下。
最后
以上就是怕孤独黑裤为你收集整理的c-风格字符串和string类型的字符串的异同的全部内容,希望文章能够帮你解决c-风格字符串和string类型的字符串的异同所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复