本文共 3494 字,大约阅读时间需要 11 分钟。
相比于C语言而言,C++提供了太多的写好了的类型和方法,其中string类型就是用起来特别方便的一种。那么问题来了,既然有C语言的char型,为什么还要学习string类型呢?我碰到过的也是最主要的一个原因就是string类型更节省空间,用多少开多少,而char类型的数组就不是了,必须开最大值。其次还有一个重要的原因就是C++中的map容器等不支持char型数组的,只能写map<string,int>mp这样。所以,扯了这么多,就来跟我看看string类型常用的技能吧。
首先要使用string数据类型,需要引入头文件 #include<string>,注意不是string.h头文件。
1.string类型的声明:
string s;
2.string类型的初始化:
string s="abcd"; 或者 string s="a b cd";
这两种分别是不带空格和带空格的初始化,是都可以的。
3.string类型的读入:
cin>>s; //不能读入空格,以空格、制表符、回车符作为结束标志 getline(cin,s); //可以读入空格和制表符,以回车符作为结束标志4.求string类型的长度:
int len=s.size(); 或者 int len=s.length();
两种方法是等价的
5.求string类型下标为i的字符:
s[i] 或 char c=s.at(i)6.查找t是否为s的子串:
s.find(t);如果t是s的子串则返回首次匹配的位置,否则返回 string::npos 或 -1
7.字符数组转string类型: s=str;str为char数组,s为string类型
8.string类型转字符数组:
strcpy(str,s.c_str());需要引用string.h头文件
9.两个string比较大小:
if(s1<s2); 或 s1.compare(s2);相等时返回0;s1>s2时返回1,s1<s2时返回-1
/
字符串可以和类型相同的字符串相比较,也可以和具有同样字符类型的数组比较。
Basic_string 类模板既提供了 >、<、==、>=、<=、!= 等比较运算符,还提供了 compare() 函数,其中 compare() 函数支持多参数处理,支持用索引值和长度定位子串进行比较。该函数返回一个整数来表示比较结果。如果相比较的两个子串相同,compare() 函数返回 0,否则返回非零值。类 basic_string 的成员函数 compare() 的原型如下:
int compare (const basic_string& s) const;
int compare (const Ch* p) const; int compare (size_type pos, size_type n, const basic_string& s) const; int compare (size_type pos, size_type n, const basic_string& s,size_type pos2, size_type n2) const; int compare (size_type pos, size_type n, const Ch* p, size_type = npos) const;如果在使用 compare() 函数时,参数中出现了位置和大小,比较时只能用指定的子串。例如:
s.compare {pos,n, s2);
若参与比较的两个串值相同,则函数返回 0;若字符串 S 按字典顺序要先于 S2,则返回负值;反之,则返回正值。下面举例说明如何使用 string 类的 compare() 函数。
【例 1】程序的执行结果为:
m = 1, n = -1, p = -1, q = 0
由此可知,string 类的比较 compare() 函数使用非常方便,而且能区分字母的大小写。建议读者多使用此函数。
String 类的常见运算符包括 >、<、==、>=、<=、!=。其意义分别为"大于"、"小于"、"等于"、"大于等于"、"小于等于"、"不等于"。
比较运算符使用起来非常方便,此处不再介绍其函数原型,读者直接使用即可。下面以例 2 进行说明。 【例 2】程序运行结果为:
S1= DEF
CP1 = ABC CP2 = DEF CP3 = DEFG CP4 = def S1 <= CP1 returned False S1 <= CP2 returned True S1 <= CP3 returned True CP1 <= S1 returned True CP2 <= S1 returned True CP4 <= S1 returned False由上述内容可知,使用比较运算符可以非常容易地实现字符串的大小比较。在使用时比较运算符时,读者应注意,对于参加比较的两个字符串,任一个字符串均不能为 NULL
,否则程序会异常退出。
/
10.两个string连接:
s1=s1+s2; 或 s1.append(s2);11对string类型数组排序
string s[100];
sort(s,s+n,cmp);
int cmp(string a,string b)
{ return a<b; //或a>b; } 其中sort函数为C++ STL中提供的快速排序函数。
------------------
转载地址:http://sovli.baihongyu.com/