C++ string类

来源:互联网 发布:安装ubuntu双系统分区 编辑:程序博客网 时间:2024/06/08 08:47

http://blog.csdn.net/stephen1315/article/details/7444318

总结一下C++中string的操作,来自〈C++ Primer〉第四版。

1. string对象的定义和初始化:

 1 string s1;         //空串 2  string s2(s1);         //将s2初始化为s1的一个副本 3  string s3("value");    //s3初始化并赋值 4  string s4(n,"c");    //s4初始化,赋值为n个'c' 5  string s5(b,e);        //初始化s5为迭代器b,e范围内的副本 6  string s6(cp);        //用c风格的字符串初始化 7  string s7(cp,n);    //cp前n个元素的副本 8  string s8(s2,pos2);    //s8为s2从pos2开始到结尾的副本 9  string s9(s2,pos2,len2);//同上,不过的长度为len2(不超过s2的长度)10  //其中有一种方法需要注意:11 char no_null[] = {'H','i'};12 string s10(no_null);    //错误,不是以null结尾的串13 string s10(no_null,2);    //ok,可以自动添加null结尾


2. string的读写:

1 string s;2 cin >> s;3 cout << s << endl;4 //注意,cin是会被空白符截断的5 //要得到整行输入,采用while循环,或者:6 getline(cin,s);


3.string的操作:

 1 s.empty();    //判断s是否为空,相当于s.size()==0 2 s.size();    //s的长度 3 s[n];        //n位置的字符(左值返回) 4 s1+s2;        //返回s1和s2连接的串 5 s1=s2;        //把s1替换为s2的副本 6 s1==s2;        //判断s1,s2是否相等 7 !=,<,<=,>,>=    //按字典顺序比较 8 //================== 9 s.insert(p,t);    //在迭代器p指向的元素前插入t,返回指向t的迭代器10 s.insert(p,n,t);//同上,插入n个t,返回void11 s.insert(p,b,e);//插入迭代器b,e间的元素,返回void12 s.insert(pos,n,c); //在pos前插入n个字符c,返回s的引用13 s.insert(pos,s2);//在pos前插入s2,返回s的引用14 s.insert(pos,s2,pos2,len); 15 //在pos前插入s2中从pos2开始的len个字符,返回s的引用16 s.insert(pos,cp,len);17 //pos前插入cp数组(c风格字串)的前len个字符,返回s的引用18 s.insert(pos,cp);//在pos前插入cp,返回s的引用19 //==================20 s.assign(b,e);    //用b,e间的元素替换s,返回s21 s.assign(n,t);    //用n个t替换s,返回s22 s.assign(s2);    //用s2的副本替换s,返回s的引用23 s.assign(s2,pos2,len);24 //用s2从pos2开始的len长的副本替换s,返回s的引用25 s.assign(cp,len)//用cp的前len个字符副本替换s,返回s的引用26 s.assign(cp)    //用cp的副本替换s,返回s的引用27 //==================28 s.erase(p);    //删除迭代器p指向的元素,返回指向后一个元素的迭代器29 s.erase(b,e);    //删除b,e间的元素,返回值同上30 s.erase(pos,len);//删除从pos开始的len个字符,返回s的引用31 //==================32 s.substr(pos,n);//返回s中从pos开始的n个字符组成的串33 s.substr(pos);    //返回s中从pos开始到结尾的串34 s.substr();    //返回s的副本35 //==================36 s.append(args);    //将args串接在s的后面,返回s的引用37 //==================38 s.replace(pos,len,args);39 //删除s中从pos开始的len个字符,用args串替换,返回s的引用40 //args不能为b2,e241 s.replace(b,e,args);42 //删除迭代器b,e范围内的字符,用args替换,返回s的引用43 //args不能为s2,pos2,len244 //==================append,replace的args的说明45 s2        //string46 s2,pos2,len2    //s2中下pos2开始的len2个字符47 cp        //c风格的串48 cp,len2        //cp指向以空结束的前len2个字符49 n,c        //字符c的n个副本50 b2,e2        //迭代器b2,e2范围内的所有字符


4.string的查找操作:

 1 s.find(args);    //args的第一次出现 2 s.rfind(args);    //最后一次出现 3 s.find_first_of(args);//args中任意字符的第一次出现 4 s.find_last_of(args);//args中任意字符的最后一次出现 5 s.find_first_not_of(args);//查找第一个不属于args的字符 6 s.find_last_not_of(args);//查找最后一个不属于args的字符 7 //=================args 8 c,pos=0        //查找字符c,默认从s的0位置开始 9 s2,pos=0    //查找s210 cp,pos=0    //查找cp(c风格字串)11 cp,pos,n    //从s的pos开始查找cp的前n个字符,没有默认值


5.string的比较:

除了刚才提到的等号及不等号的比较,c++还提供了一个比较函数compare

1 s.compare(s2);    //比较s和s22 s.compare(pos1,n1,s2);//s从pos1开始的n1个字符与s2比较3 s.compare(pos1,n1,s2,pos2,n2);4 //s从pos1开始的n1个字符与s2从pos2开始的n2个字符比较5 s.compare(cp); //比较s和cp6 s.compare(pos1,n1,cp); //s从pos1开始的n1个字符与cp比较7 s.compare(pos1,n1,cp,n2); //s从pos1开始的n1个字符与cp的前n2个字符比较8 //compare的返回值: >0 s大; <0 s小; =0 二者相等

6.cctype提供的字符判断函数:

需要包含头文件: #include<cctype>

 1 isalnum(c);    //true if c 是数字或字母 2 isalpha(c);    //true if c 是字母 3 iscntrl(c);    //true if c 是控制字符 4 isdigit(c);    //true if c 是数字 5 isgraph(c);    //true if c 不是空格但可打印 6 islower(c);    //true if c 是标点符号 7 isprint(c);    //true if c 是空白字符 8 ispunct(c);    //true if c 是大写字母 9 isspace(c);    //true if c 是空白字符10 isupper(c);    //true if c 是大写字符11 isxdigit(c);    //true if c 是十六进制数12 tolower(c);    //将c转换为小写13 toupper(c);    //将c转换为大写
原创粉丝点击