1.string为空时写法
if(string.size()==0)
2.常用函数
string类提供了一系列针对字符串的操作,比如:
- 1.size()和length()--返回string对象的字符个数,他们执行效果相同
- 2.push_back() --尾插一个字符
- 3.insert()-- 插入字符,insert(pos,char):在制定的位置pos前插入字符char
- 4.append()--拼接字符串,在字符串的末尾添加字符
- 5.sort(s.begin(),s.end())-- string的排序
- 6.find() -- 在字符串中查找字符串
- 7.replace() -- 替换字符串 ,string &replace(int p, int n,const char *s); //删除从p开始的n个字符,然后在p处插入串s
- 8.substr() -- 返回某个子字符串,string substr(int pos = 0,int n = npos) const; //返回pos开始的n个字符组成的字符串
- 9.string &erase(int p, int n);//删除p开始的n个字符,返回修改后的字符串
- 10.void swap(string &s2); //交换当前字符串与s2的值
- 11.删除
erase函数的原型如下:
(1)string& erase( size_t pos = 0m size_t n = npos);
(2)interator erase( iterator position);
(3)iterator erase( iterator first, iterator last);
有三种用法:
(1)erase( pos, n); 删除从pos开始的n个字符,例如 str.erase(0,n);删除0位置开始的n个字符(循环左移时用到)
(2)erase( position); 删除position处的一个字符(position是个string类型的迭代器)
(3)erase(first,last);删除从first到last之间的字符,(first和last都是迭代器)
例如:
string s1 = "123456789";
// s1.erase(s1.begin()+1); //13456789,删除2
// s1.erase(s1.begin()+1,s1.end()-2); // 189,删除2到7
s1.erase(1,6); // 189,删除1开始的6个字符,即删除1-6
- 12.分割截取s.substr(pos, n)
包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)
string s("12345asdf");
string a = s.substr(0,5); //获得字符串s中从第0位开始的长度为5的字符串
3.剑指offer例题:
左旋字符串,输入:S=”abcXYZdef”,循环左移3位。输出:“XYZdefabc”
string LeftRotateString(string str, int n) {
str+=str.substr(0,n);
str.erase(0,n);
return str;
}