标准库类型string
1. string对象的定义和初始化
(1).string s; //表示定义string对象,默认为空字符串
(2).string s(s1); 或 string s = s1; //用另一个string对象初始化,并用s1的副本初始化
(3). string s(s1, pos); //从string对象s1的pos处开始的字符的拷贝;若pos >s1.size()则构造函数的行为未定义
(4).string s(s1, pos, len) //用s1从pos位置开始的至多len长度字符初始化s,不管len为多少,构造函数至多拷贝s1.size()-pos个字符
(5). string s(n, ‘c’); //用n个相同字符进行初始化
(6). string s(cp, n); //cp是指向字符串的常量指针(constchar*),用cp所指向的字符串的前n个字符初始化string对象;如果省略n,则初始化到遇到空字符
(7). string s = “maple”; 或 string s(“maple”);//用字符串字面值进行初始化
2.string的最常用操作
(1).os << s; //将s写到输出流os当中,并返回os;
(2).is >>s; //从is读取字符串赋给s,字符串以空格分隔,并返回is
(3).getline(is, s); //从is中读取一行赋给s,返回is
关于(3)附:
C++中有两个getline函数,一个是在string头文件中,定义的是一个全局的函数,函数声明是istream&getline ( istream& is, string& str, char delim )与istream& getline ( istream& is, string& str );
另一个则是istream的成员函数,函数声明是istream& getline (char* s,streamsize n )与istream& getline (char* s, streamsize n, char delim );注意第二个getline是将读取的字符串存储在char数组中而不可以将该参数声明为string类型,因为C++编译器无法执行此默认转换。[ cin.getline(s, 5) ]
(4).s.empty() //判定字符是否为空
(5).s.size() //返回s中字符的个数
(6).s[n] //返回s中第n个字符的引用
(7).s1+s2 //返回s1和s2连接后的结果
(8).s1 = s2; //用s2中的副本代替s1中的字符串
(9).s1 == s2; s1 != s2; //对字符串做等性判断
(10).<,<=,>,>= //利用字符在字典中的顺序进行比较,且对字母的大小写敏感
3.对string对象使用基于范围的for语句[C++11新标准]
语法形式为: for(declaration : expression)
Statement;
4.额外的string操作
(1).子字符串操作:s.substr(pos,n)
返回一个string,包含s中从pos开始的n个字符的拷贝。pos的默认值是0。n的默认值是s.size()-pos,即拷贝从pos开始的所有字
(2).修改string对象的操作
[1] s.insert(pos,args); //在s的pos位置前插入args
[2] s.erase(pos,len); //删除从位置pos开始的len长度字符。如果len被省略,则删除从pos开始直到s末尾的所有字符。
[3] s.assign(args); //将s中的字符替换为args指定的字符;
[4] s.append(args); //将args追加到s
[5] s.replace(range, args); //将s的range范围的字符替换为args
(3).string搜索操作
[1]s.find(args); //查找s中args第一次出现的位置
[2]s.rfind(args); //查找s中args最后一次出现的位置
(4).compare()函数
[1]s.compare(s);
(5).数值转换
[1]to_string(val);