第十八章 2string字符串
//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型字符数组的第一个区别