C++ string 类型(入门基础)

C++ string 类型

用string 对象处理字符串

用字符数组处理字符串时,常常会发生数组越界的问题。因此C++标准模板库中设计了“string”数据类型,专门处理字符串。string 类型的变量就是专门用来处理字符串 的,也叫“string”对象。string类型并不是C++语言的基本数据类型,而是c++ 标准模板库中的一个“类”。

在C++编程时,优先考虑使用string对象来处理字符串,因为其用法比字符数组更简单,而且不易出错。

定义string对象

定义string对象和其他数据类型没有什么不同:

string 变量名;

而且定义的时候还可以初始化,例如:

string str1;
string city="beijing";

定义string对象时,如果不对它进行初始化,那么它的值为空,即” “。

与字符数组不同的是一个string 对象的体积,大小是固定的,即表达式”sizeof(string)"的值是固定的,和其中存放的字符串的长度无关。但是这个固定的值在不同编译器上是不同的。string 对象并不会直接存放字符串,而是会在别的地方开辟空间存放,string对象只存放该内存空间的地址,或者再加上其他信息。

还可以定义string对象数组,例如:

string as[]={"beijing","shanghai","chengdu"};
cout<<as[1];//输出上海。
string 对象的输入输出

string对象可以用cin 和cout进行输入和输出,例如:

string s1,s2;
cin>>s1>>s2;
cout<

cin读入时会忽略开头的制表符、换行符以及空格,当遇到空格或者换行符就停止(不会读入空字符)

#include 
#include 
#include 
using namespace std;
int main(){
	string str;
	int tot;
	while (cin>>str)
	{
		cout<<++tot<<" "<<str<<endl;
	}
	return 0;
}
string对象的赋值

string 对象可以相互赋值,也可以用字符串常量和字符数组的名字对string对象进行赋值。赋值时不需要考虑被赋值对象是否有足够的空间存放。例如:

string s1,s2="OK";
s1="china";
s2=s1;//s1和s2 不等长也没关系,赋值后s2的内容和s1一样。
char name[]="lily";
s1=name;

用普通字符串对string对象进行赋值,普通字符串的内容会被复制到string对象所管理的那片内存空间去。

string对象的运算

string对象之间可以“<",">","<=","==",">=",运算符进行比较,还可以用”+"运算符将连个string 对象进行相加,或者将一个字符串常量和string对象相加,将一个字符数组和string对象相加,相当于做字符串连接。“+=”运算符也适用于string对象。此外,string对象还可以通过“[]"运算符和下标,存取字符串中的某个字符。例如:

string s1="123",s2="abc",s3;
s3=s1+s2;//s3变成"123abc"
s3+="de";//s3变成"123abcde"
bool b=s1<s3;//b为r=true 
char c=s1[2];//c变成'3'
s1[2]='5';s1变成"125"

string对象比较大小时,是按照字典顺序比较的,而且是大小写相关的。由于大写字母的ASCll码小于小写字母的ASCll码。所以“Zbc"比"abc"小。

string对象用法示例:

string对象还有一些成员函数,可以方便的实现一些功能。如查找子串等,这些成员函数的调用方法就是”string“对象名。

#include 
#include  //使用string对象必须包含的头文件 
using namespace std;
int main(){
	string s1="123",s2;
	s2+=s1;
	s1="abc";
	s1+="def";
	cout<<"1)"<<s1<<endl;
	if(s2<s1){
		cout<<"2)s2<<endl;
	}
	else {
		cout <<"2)s2>=s1"<<endl;
	}
	s2[1]='A';
	s1="XYZ"+s2;
	string s3=s1+s2;
	cout <<"3)"<<s3<<endl;
	cout<<"4)"<<s3.size() <<endl;//求s3的长度,输出4)9
	string s4=s3.substr(1,3);//求从下标1开始,长度为3 的子串。
	cout<<"5)"  <<s4<<endl;
	char str[20];
	strcpy(str,s4.c_str());//复制s4中的字符串到str 
	cout<<"6)"<<str<<endl;
	return 0;	
}

C++ string 类型(入门基础)_第1张图片

你可能感兴趣的:(C++,c++,字符串)