//char型字符串是C语言风格的字符串,它是用数组来保存字符串的,但是到了C++时代,由于延生了类,出现了一种C++风格的字符串,也就是string型字符串
//这种风格的字符串是用string类来定义字符串的,因此要使用这个string类,我们必须在程序开头添加头文件string,string类存在于名字空间std中,这样我们就必须使用using std:string指令,或者直接用std::string来访问它
//string类在定义时隐藏掉了字符串的数组性质,因此您有使用string类定义字会串时不用考虑如休将字符串存放在数组中,string类已经为您做好了这一步,您要做的,就是象定义一个整型变量那样使用它
//string str; //这里定义了一个C++风格的字符串str
//由于string是个类,那么string定义的字符串就可看作是string类的一个对象,或者我们可以这么说:C++风格的字符串就是用对象来保存字符串的
//接下来的例子将演示char型字符数组和string型字符串的不同
/*
#include <iostream>
#include <string>
using namespace std;
bool check(char ch[], char ch1[]);
int main()
{
string str="string型字符串";
char ch[13] = "char型字符串";
cout<<"请输入“狗”的英文单词"<<endl;
cin>>str;
if(str=="dog")
{
cout<<"输入正确,狗的第一个字符为:"<<str[0]<<endl;
}else{
cout<<"输入错误"<<endl;
}
cout<<"请输入“猪”的英文单词"<<endl;
cin>>ch;
//if(ch[0]=='p' && ch[1]=='i' && ch[2]=='g')
char pig[] = "pig";
//if(check(ch,pig) == true)
//strcmp函数用来比输两个字符串是否相等
//假如str1<str2,返回一个小于0的数字,如-1
//假如str1=str2, 返回0
//假如str1>str2, 返回一个大于0的数字,如1
if(strcmp(ch,pig)==0)
{
cout<<"输入正确,猪的第一个字符为:"<<ch[0]<<endl;
}else{
cout<<"输入错误"<<endl;
}
return 0;
}
bool check(char ch[], char ch1[])
{
//char ch1[]="pig";
bool ret=true;
if(sizeof(ch) == sizeof(ch1))
{
for(int i=0; i<strlen(ch1); i++){
if(ch[i] != ch1[i]){
ret = false;
break;
}
}
}else{
ret =false;
}
return ret;
}
//未命名字符串
//cout<<"pig";
//该语句中的pig就是作为一个末命名字符串保存在文字常量区,然后通过cout对像加提取运算符<<以流的形式将它们输出
//由于末命名字符串放在文字常量区,所以它就常量
//使用strcmp函数后,代码明显示简化了不少,但是再简化也不如string类的字符串,由于string类的成员函数重载了比较运算符(==)之类的关系运算符,因些string类允许您使用运算符对它的字符串对像进行比较,这是string型字符串与char型字符数组的第一个区别