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

  

posted @ 2012-09-19 23:12  简单--生活  阅读(245)  评论(0编辑  收藏  举报
简单--生活(CSDN)