1、String的常用用法
在C语言中,使用字符数组char str[]来存字符串,字符数组操作比较麻烦,而且容易有'\0'的问题,C++在STL中加入string类型,对字符串常用的需求功能进行封装。
使用string,必须要加头文件#include<string>和using namespace std;
注意:#include<string>和#include<string.h>的区别,#inlcude<string.h>是包含了字符串常用的函数,比如strcat,strcmp。#include<string.h>和#include<cstring>等价。
1.1、string的定义
定义string的方式和基本类型定义相同。
string str; string str="abcd";
1.2、string中的内容访问
和vector一样,有两种方式:下标访问,迭代器访问
1.2.1、下标访问
可以如同字符数组一样去访问string
1.2.2、迭代器访问
string的迭代器不需要参数,直接定义string::iterator it;
#include<stdio.h> #include<string> using namespace std; int main() { string str="abcd"; for(int i=0;i<str.length;i++) { printf("%c ",str[i]);//a b c d } //通过迭代器访问string内容 for(string::iterator it=str.begin();it!=str.end();it++) { pritnf("%c ",*it); } return 0;
1.3、string常用函数
1.3.1、+,+=,字符串拼接
1.3.2、==,!=,<,<=,>=,>比较大小
1.3.3、length()/size(),字符串长度
1.3.4、insert()
1.3.5、erase()
1.3.6、clear()
1.3.7、substr()
1.3.8、replace()
#include<stdio.h> #include<string> using namespace std; int main() { string str="abcd"; for(int i=0;i<str.length;i++) { printf("%c ",str[i]);//a b c d } //通过迭代器访问string内容 for(string::iterator it=str.begin();it!=str.end();it++) { pritnf("%c ",*it); } string str1="xyz"; string str2=str+str1; cout<<str2<<endl;//abcdxyz if(str<str1)printf("OK\n");//字符串比较,首先比较长度,长度相同的进行字典序比较。 printf("%d %d\n",str.lenght(),str.size());//4,4//获取字符串的长度,大小 cout<<str.insert(3,str1)<<endl;//往str[3]处插入xyz,输出abcxyzd; str.insert(str.begin()+3,str.begin(),str.end); str.substr(0,3);//substr(pos,len),从0开始,长度为3的子串 return 0; }
1.3.9、string::npos
string::npos是一个常数,本身值为-1,用来做find函数失配的返回值。
1.3.10、find()
#include<stdio.h> #include<string> using namespace std; int main() { string str="abcd"; string str1="bc"; if(str.find(str1)!=string::npos) { cout<<str.find(str1)<<endl; } if(str.find(str2,2)!=string::npos) { cout<<str.find(str2,2)<<endl; } else { cout<<"No Find"<<endl; } return 0; }
2018-09-25 16:15:15
@author:Foreordination