Evo. G Tech Team Forum
Welcome to Evo. G Tech Team Forum. We have moved to a new website : www.evogtechteam.com

Thanks you.

by Evo. G Tech Team Management.

[转载]C++标准库 String类型操作总结

View previous topic View next topic Go down

[转载]C++标准库 String类型操作总结

Post by too wei on June 28th 2015, 16:18

1. string对象的定义和初始化
string s1;                       //空串
string s2(s1);                //将s2初始化为s1的一个副本
string s3("value");        //s3初始化并赋值
string s4(n,"c");            //s4初始化,赋值为n个'c'
string s5(b,e);              //初始化s5为迭代器b,e范围内的副本
string s6(cp);               //用c风格的字符串初始化
string s7(cp,n);            //cp前n个元素的副本

string s8(s2,pos2);      //s8为s2从pos2开始到结尾的副本
string s9(s2,pos2,len2);   //同上,不过的长度为len2(不超过s2的长度)

//其中有一种方法需要注意:
char no_null[] = {'H','i'};
string s10(no_null);         //错误,不是以null结尾的串
string s10(no_null,2);      //ok,可以自动添加null结尾

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



3.string的操作:
s.empty();        //判断s是否为空,相当于s.size()==0
s.size();           //s的长度
s[n]; 
              //n位置的字符(左值返回)
s1+s2;           //返回s1和s2连接的串
s1=s2;           //把s1替换为s2的副本
s1==s2;        //判断s1,s2是否相等
!=,<,<=,>,>= //按字典顺序比较


s.insert(p,t);            //在迭代器p指向的元素前插入t,返回指向t的迭代器
s.insert(p,n,t);         //同上,插入n个t,返回void
s.insert(p,b,e);        //插入迭代器b,e间的元素,返回void
s.insert(pos,n,c);    //在pos前插入n个字符c,返回s的引用
s.insert(pos,s2);     //在pos前插入s2,返回s的引用
s.insert(pos,s2,pos2,len);   //在pos前插入s2中从pos2开始的len个字符,返回s的引用
s.insert(pos,cp,len);            //pos前插入cp数组(c风格字串)的前len个字符,返回s的引用
s.insert(pos,cp);                 //在pos前插入cp,返回s的引用


s.assign(b,e);   //用b,e间的元素替换s,返回s
s.assign(n,t);   //用n个t替换s,返回s
s.assign(s2);   //用s2的副本替换s,返回s的引用
s.assign(s2,pos2,len);     //用s2从pos2开始的len长的副本替换s,返回s的引用
s.assign(cp,len)              //用cp的前len个字符副本替换s,返回s的引用
s.assign(cp)                   //用cp的副本替换s,返回s的引用


s.erase(p);                 //删除迭代器p指向的元素,返回指向后一个元素的迭代器
s.erase(b,e);              //删除b,e间的元素,返回值同上
s.erase(pos,len);       //删除从pos开始的len个字符,返回s的引用


s.substr(pos,n);    //返回s中从pos开始的n个字符组成的串
s.substr(pos);       //返回s中从pos开始到结尾的串
s.substr();            //返回s的副本


s.append(args);   //将args串接在s的后面,返回s的引用


s.replace(pos,len,args);
//删除s中从pos开始的len个字符,用args串替换,返回s的引用
//args不能为b2,e2


s.replace(b,e,args);
//删除迭代器b,e范围内的字符,用args替换,返回s的引用
//args不能为s2,pos2,len2


//append,replace的args的说明
s2                    //string
s2,pos2,len2   //s2中下pos2开始的len2个字符
cp                   //c风格的串
cp,len2          //cp指向以空结束的前len2个字符
n,c                //字符c的n个副本
b2,e2           //迭代器b2,e2范围内的所有字符



4.string的查找操作:
s.find(args);            //args的第一次出现
s.rfind(args);          //最后一次出现
s.find_first_of(args);         //args中任意字符的第一次出现
s.find_last_of(args);         //args中任意字符的最后一次出现
s.find_first_not_of(args); //查找第一个不属于args的字符
s.find_last_not_of(args); //查找最后一个不属于args的字符


//args
c,pos=0    //查找字符c,默认从s的0位置开始
s2,pos=0 //查找s2
cp,pos=0 //查找cp(c风格字串)
cp,pos,n  //从s的pos开始查找cp的前n个字符,没有默认值



5.string的比较:
除了刚才提到的等号及不等号的比较,c++还提供了一个比较函数compare
s.compare(s2);                      //比较s和s2
s.compare(pos1,n1,s2);        //s从pos1开始的n1个字符与s2比较
s.compare(pos1,n1,s2,pos2,n2); //s从pos1开始的n1个字符与s2从pos2开始的n2个字符比较
s.compare(cp);                            //比较s和cp
s.compare(pos1,n1,cp);             //s从pos1开始的n1个字符与cp比较
s.compare(pos1,n1,cp,n2);       //s从pos1开始的n1个字符与cp的前n2个字符比较
//compare的返回值: >0 s大; <0 s小; =0 二者相等



6.cctype提供的字符判断函数:
需要包含头文件cctype
isalnum(c);  //true if c 是数字或字母
isalpha(c);   //true if c 是字母
iscntrl(c);    //true if c 是控制字符
isdigit(c);    //true if c 是数字
isgraph(c); //true if c 不是空格但可打印
islower(c); //true if c 是标点符号
isprint(c);   //true if c 是空白字符
ispunct(c); //true if c 是大写字母
isspace(c); //true if c 是空白字符
isupper(c); //true if c 是大写字符
isxdigit(c);  //true if c 是十六进制数
tolower(c); //将c转换为小写
toupper(c); //将c转换为大写

too wei
Sponsor
Sponsor

Posts : 31
Points : 19011
Reputation : 0
Join date : 2015-04-21
Age : 19
Location : Johor

View user profile

Back to top Go down

View previous topic View next topic Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum