std::string
2017-11-15 12:03 清晨、午后 阅读(461) 评论(0) 编辑 收藏 举报1. 截取子串
s.substr(pos, n) //截取s中从pos开始(包括pos,不包括n)的n个字符的子串,并返回 s.substr(pos) //截取s中从从pos开始(包括pos)到末尾的所有字符的子串,并返回
2. 替换子串
s.replace(pos, n, s1) //用s1替换s中从pos开始(包括0)的n个字符的子串
3. 查找子串
返回字符串s1在s中的位置,
std::string 的方法 find,返回值类型是std::string::size_type, 对应的是查找对象在字符串中的位置(从0开始), 如果未查找到,该返回值是一个很大的数据(4294967295),判断时与 std::string::npos 进行对比 std::string str("abcdefg"); std::string::size_type pos = str.find("abc"); if (pos != std::string::npos) { cout << "Not find" << endl; } 或 std::string str("abcdefg"); if (str.find("abc") != std::string::npos) { cout << "Not find" << endl; } 很多同学由于经常使用 CString 的缘故,喜欢这样写 std::string str("abcdefg"); int pos = str.find("abc"); if (pos < 0) { cout << "Not find" << endl; } 这样写理论上也是可以的,因为 size_type 相当于 unsigned int类型,最大值4294967295强制转换为int型,就是-1 但下面的写法是错误的: std::string str("abcdefg"); if (str.find("abc") < 0) //错误,应该写成 != std::string::npos { cout << "Not find" << endl; } 最后,建议使用size_type,这样可以适应不同的平台。因为int 类型的大小会根据不同平台而不同。
s.find(s1) //查找s中第一次出现s1的位置 s.find(s1,a); //从字符串s下标为a开始查找字符串s1,返回起始位置,查找时包含a位 s.rfind(s1) //查找s中最后次出现s1的位置 s.rfind(s1,a); //从字符串s下标为a开始反向查找字符串s1,返回起始位置,查找时包含a位 s.find_first_of(s1) //查找在s1中任意一个字符在s中第一次出现的位置 s.find_last_of(s1) //查找在s1中任意一个字符在s中最后一次出现的位置 s.fin_first_not_of(s1) //查找s中第一个不属于s1中的字符的位置 s.fin_last_not_of(s1) //查找s中最后一个不属于s1中的字符的位置
4.清除全部或部分字符
erase函数的原型如下: (1)string& erase ( size_t pos = 0, size_t n = npos ); (2)iterator erase ( iterator position ); (3)iterator erase ( iterator first, iterator last ); (4)string& erase() 也就是说有4种用法: (1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符 (2)erase(position);删除position处的一个字符(position是个string类型的迭代器) (3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器) (4)erase();全部清除
5.获取字符串长度
size()
返回值类型:size_type
6.插入字符串
string的成员函数insert有以下多种重载:
string &insert(int p0, const char *s); //在p0位置插入字符串s string &insert(int p0, const char *s, int n); //在p0位置插入字符串s的前n个字符 string &insert(int p0,const string &s); //在p0位置插入字符串s string &insert(int p0,const string &s, int pos, int n); //在p0位置插入字符串s从pos开始的连续n个字符 string &insert(int p0, int n, char c); //在p0处插入n个字符c iterator insert(iterator it, char c); //在it处插入字符c,返回插入后迭代器的位置 void insert(iterator it, const_iterator first, const_iteratorlast); //在it处插入从first开始至last-1的所有字符 void insert(iterator it, int n, char c); //在it处插入n个字符c