string,大小可变的字符串,有些类似于C中的字符数组。
只记载本人在ACM中常用的函数,并且全部经过程序测试。
1、初始化
string s1;——默认构造函数s1为空串
string s2(s1);——将s2初始化为与s1相同
string s3("aaa");——将s3初始化为aaa
string s4(3, 'b');——将s4初始化为bbb
2、输入输出
能用cin,cout;不能用scanf,printf。
用cin读入会忽略开头所有空白字符(如空格,换行符,制表符),读取字符直至再次遇到空白字符。
用getline能整行读入(不会忽略前驱空格),读入得到的字符串末尾没有换行符。
3、普通运算符
s[n],s1 + s2,s1 = s2,s1 == s2,!=, <, <=, >, >=均保持它们惯有的含义
4、insert插入
s1.insert(迭代器, 单个字符);——如s1.insert(s1.begin(), 's');
5、erase删除
s1.erase(数字a, 数字b);——删除s1[a]开始,删除b个
s1.erase(迭代器)——删除迭代器指示的那个元素
s1.erase(迭代器a, 迭代器b)——删除迭代器a到迭代器b之间的所有元素,删除迭代器a指示元素,不删b
6、clear清空
7、repalce替换
与erase的一三个用法相似,不过没有第二个用法
8、empty字符串为空返回真,否则返回假
9、substr函数,截取string中的一段。s = s.substr(a, b)则为将s变成自己的从第a位开始,长度为b的子串。(从第0位开始)比如s = "12345",s = s.substr(1, 3),则s = "234"。
测试程序部分为(测试过程中不小心删掉了部分- -)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 /* 2 * Author: Plumrain 3 * Created Time: 2013-09-05 15:53 4 * File Name: string.cpp 5 */ 6 #include<iostream> 7 #include<cstdio> 8 #include<cstring> 9 #include<string> 10 11 using namespace std; 12 13 #define out(x) cout<<#x<<":"<<(x)<<endl 14 #define tst(a) cout<<#a<<endl 15 16 void test_1() 17 { 18 string s1; 19 out (s1); 20 s1 = "aaa"; 21 string s2(s1); 22 out (s2); 23 string s3("bbb"); 24 out (s3); 25 string s4(3, 'c'); 26 out (s4); 27 } 28 29 void test_2() 30 { 31 string s1; 32 cin >> s1; 33 cout << s1 << endl; 34 getline(cin, s1); 35 cout << s1 << endl; 36 } 37 38 void test_3() 39 { 40 string s1 = "ccc"; 41 string s2 = "aaaaaaaa"; 42 s2 = s1; 43 out (s2); 44 out (s2.size()); 45 out (s1); 46 out (s1.size()); 47 } 48 49 void test_insert() 50 { 51 string s1 = "aaaaa"; 52 s1.insert (s1.begin(), 's'); 53 s1.insert (s1.end(), 's'); 54 s1.insert (s1.begin() + (s1.end()-s1.begin()) / 2, 91); 55 out (s1); 56 } 57 58 void test_erase() 59 { 60 string s1 = "abcdefghi"; 61 // s1.erase(2, 3); 62 s1.erase(s1.begin(), s1.end()); 63 out (s1.size()); 64 out (s1); 65 } 66 67 void test_replace() 68 { 69 string s = "abcdefghi"; 70 s.replace(2, 3, "rr"); 71 s.replace(s.begin(), s.end()-1, "rrr"); 72 // s.replace(s.begin(), "rrr"); 73 out (s); 74 } 75 76 int main() 77 { 78 test_1 (); 79 test_2 (); 80 test_3 (); 81 test_insert (); 82 test_erase (); 83 test_replace (); 84 return 0; 85 }