C++中的String 的常⽤函数⽤法总结
⼀. string
的构造函数的形式:string str :⽣成空字符串string s(str):⽣成字符串为str 的复制品string s(str, strbegin,strlen):将字符串str 中从下标strbegin 开始、长度为strlen 的部分作为字符串初值string s(cstr, char_len):以C_string 类型cstr 的前char_len 个字符串作为字符串s 的初值string s(num ,c):⽣成num 个c 字符的字符串string s(str, stridx):将字符串str 中从下标stridx 开始到字符串结束的位置作为字符串初值eg: string str1; //⽣成空字符串 string str2("123456789"); //⽣成"1234456789"的复制品 string str3("12345", 0, 3);//结果为"123" string str4("012345", 5); //结果为"01234" string str5(5, '1'); //结果为"11111" string str6(str2, 2); //结果为"3456789"1
2
3
4
5
6
7
8
9
10
c++string类型11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>#include <string>using namespace std;void test1(){ string str1; //⽣成空字符串 string str2("123456789"); //⽣成"1234456789"的复制品 string str3("12345", 0, 3);//结果为"123" string str4("0123456", 5); //结果为"01234" string str5(5, '1'); //结果为"11111" string str6(str2, 2); //结果为"3456789" cout<<"str2:"<<str2<<endl; cout<<"str3:"<<str3<<endl; cout<<"str4:"<<str4<<endl; cout<<"str5:"<<str5<<endl; cout<<"str6:"<<str6<<endl;}int main(){ test1(); return 0;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
⼆. string
的⼤⼩和容量::
三. string 的字符串⽐较::1. size()和length():返回string 对象的字符个数,他们执⾏效果相同。2. max_size():返回string 对象最多包含的字符数,超出会抛出length_error 异常3. capacity():重新分配内存之前,string 对象能包含的最⼤字符数1
2
3
4
5
6
7
8
void test2(){ string s("1234567"); cout << "size=" << s.size() << endl; cout << "length=" << s.length() << endl; cout << "max_size=" << s.max_size() << endl; cout << "capacity=" << s.capacity() << endl;}
1
2
3
4
5
6
7
8
9 1. C ++字符串⽀持常见的⽐较操作符(>,>=,<,<=,==,!=),甚⾄⽀持string 与C-string 的⽐较(如 str<”hello”)。 在使⽤>,>=,<,<=这些操作符的时候是根据“当前字符特性”将字符按字典顺序进⾏逐⼀得 ⽐较。字典排序靠前的字符⼩, ⽐较的顺序是从前向后⽐较,遇到不相等的字符就按这个位置上的两个字符的⽐较结果确定两个字符串的⼤⼩(前⾯减后⾯)同时,string (“aaaa”) <string (aaaaa)。 2. 另⼀个功能强⼤的⽐较函数是成员函数compare()。他⽀持多参数处理,⽀持⽤索引值和长度定位⼦串来进⾏⽐较。 他返回⼀个整数来表⽰⽐较结果,返回值意义如下:0:相等 1:⼤于 -1:⼩于 (A 的ASCII 码是65,a 的ASCII 码是97)
1
2
3
4
5
6
7
四. string 的插⼊:push_back() 和
insert()
五、string 拼接字符串:append() & + 操作符 // (A 的ASCII 码是65,a 的ASCII 码是97) // 前⾯减去后⾯的ASCII 码,>0返回1,<0返回-1,相同返回0 string A("aBcd"); string B("Abcd"); string C("123456"); string D("123dfg"); // "aBcd" 和 "Abcd"⽐较------ a > A cout << "Apare(B):" << Apare(B)<< endl; // 结果:1 // "cd" 和 "Abcd"⽐较------- c > A cout << "Apare(2, 3, B):" <<Apare(2, 3, B)<< endl; // 结果:1 // "cd" 和 "cd"⽐较 cout << "Apare(2, 3, B, 2, 3):" << Apare(2, 3, B, 2, 3) << endl; // 结果:0 // 由结果看出来:0表⽰下标,3表⽰长度 // "123" 和 "123"⽐较 cout << "Cpare(0, 3, D, 0, 3)" <<Cpare(0, 3, D, 0, 3) << endl; // 结果:0}
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24void test4(){ string s1; // 尾插⼀个字符 s1.push_back('a'); s1.push_back('b'); s1.push_back('c'); cout<<"s1:"<<s1<<endl; // s1:abc // insert(pos,char):在制定的位置pos 前插⼊字符char s1.insert(s1.begin(),'1'); cout<<"s1:"<<s1<<endl; // s1:1abc }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
六、 string 的遍历:借助迭代器 或者
下标法
七、 string 的删除:erase() // ⽅法⼀:append() string s1("abc"); s1.append("def"); cout<<"s1:"<<s1<<endl; // s1:abcdef // ⽅法⼆:+ 操作符 string s2 = "abc"; /*s2 += "def";*/ string s3 = "def"; s2 += s3.c_str(); cout<<"s2:"<<s2<<endl; // s2:abcdef }
3
4
5
6
7
8
9
10
11
12
13
14void test6(){ string s1("abcdef"); // 调⽤⼀次构造函数 // ⽅法⼀: 下标法 for ( int i = 0; i < s1.size() ; i++ ) { cout<<s1[i]; } cout<<endl; // ⽅法⼆:正向迭代器 string::iterator iter = s1.begin(); for ( ; iter < s1.end() ; iter++) { cout<<*iter; } cout<<endl; // ⽅法三:反向迭代器 string::reverse_iterator riter = s1.rbegin(); for ( ; riter < s1.rend() ; riter++) { cout<<*riter; } cout<<endl;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
⼋、 string 的字符替换:
九、 string 的⼤⼩写转换:tolower()和toupper()函数 或者 STL 中的transform 算法⽅法⼀:使⽤C 语⾔之前的⽅法,使⽤函数,进⾏转换1. iterator erase(iterator p);//删除字符串中p 所指的字符2. iterator erase(iterator first , iterator last );//删除字符串中迭代器区间[first ,last )上所有字符3. string & erase(size_t pos = 0, size_t len = npos);//删除字符串中从索引位置pos 开始的len 个字符4. void clear();//删除字符串中所有字符
1
2
3
4
5
6
78
9
10
11void test6(){ string s1 = "123456789"; // s1.erase(s1.begin()+1); // 结果:13456789 // s1.erase(s1.begin()+d()-2); // 结果:189 s1.erase(1,6); // 结果:189 string::iterator iter = s1.begin(); while ( iter != s1.end() ) { cout<<*iter; *iter++; } cout<<endl;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 1. string & replace(size_t pos, size_t n, const char *s);//将当前字符串从pos 索引开始的n 个字符,替换成字符串s 2. string & replace(size_t pos, size_t n, size_t n1, char c); //将当前字符串从pos 索引开始的n 个字符,替换成n1个字符c 3. string & replace(iterator i1, iterator i2, const char * s);//将当前字符串[i1,i2)区间中的字符串替换为字符串s 1
2
3
4
5
6
7void test7(){ string s1("hello,world!"); cout<<s1.size()<<endl; // 结果:12 s1.replace(s1.size()-1,1,1,'.'); // 结果:hello,world. // 这⾥的6表⽰下标 5表⽰长度 s1.replace(6,5,"girl"); // 结果:hello,girl. // s1.begin(),s1.begin()+5 是左闭右开区间 s1.replace(s1.begin(),s1.begin()+5,"boy"); // 结果:boy,girl. cout<<s1<<endl;}
1
2
3
4
5
6
7
8
9
10
11
12
13
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论