string类的构造函数和析构函数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 string (const char *s);string (int n,char c); string s; string s (str) ;string s (str,stridx) ; string s (str,stridx,strlen) ;string s (cstr) ;string s (chars,chars_len) ;string s (num,c) ;string s (beg,end) ;s.~string ();
此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2 = “hello”;都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常。
string类的字符操作: 1 2 3 4 const char &operator [](int n)const ;const char &at (int n) const ;char &operator [](int n);char &at (int n) ;
operator[]和at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。
1 2 3 4 5 6 const char *data () const ;const char *c_str () const ;int copy (char *s, int n, int pos = 0 ) const ;
string的特性描述: 1 2 3 4 5 6 7 8 9 10 11 12 int capacity () const ;int max_size () const ;int size () const ;int length () const ;bool empty () const ;void resize (int len,char c) ;
string类的输入输出操作: string类重载运算符operator>>用于输入,同样重载运算符operator<<用于输出操作。 函数getline(istream &in,string &s);用于从输入流in中读取字符串到s中,以换行符’\n’分开。
string的赋值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 string &operator =(const string &s); string &assign (const char *s) ;string &assign (const char *s,int n) ;string &assign (const string &s) ;string &assign (int n,char c) ;string &assign (const string &s,int start,int n) ;string &assign (const_iterator first,const_itertor last) ;
string的连接: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 string &operator +=(const string &s); string &append (const char *s) ;string &append (const char *s,int n) ;string &append (const string &s) ;string &append (const string &s,int pos,int n) ;string &append (int n,char c) ;string &append (const_iterator first,const_iterator last) ;
string的比较: 1 2 bool operator ==(const string &s1,const string &s2)const ;
运算符”>”,”<”,”>=”,”<=”,”!=”均被重载用于字符串的比较。
1 2 3 4 5 6 7 8 9 int compare (const string &s) const ;int compare (int pos, int n,const string &s) const ;int compare (int pos, int n,const string &s,int pos2,int n2) const ;int compare (const char *s) const ;int compare (int pos, int n,const char *s) const ;int compare (int pos, int n,const char *s, int pos2) const ;
compare函数在>时返回1,<时返回-1,==时返回0
string的子串: 1 2 string substr (int pos = 0 ,int n = npos) const ;
string的交换:
string的查找函数: 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 30 31 32 33 int find (char c, int pos = 0 ) const ;int find (const char *s, int pos = 0 ) const ;int find (const char *s, int pos, int n) const ;int find (const string &s, int pos = 0 ) const ;int rfind (char c, int pos = npos) const ;int rfind (const char *s, int pos = npos) const ;int rfind (const char *s, int pos, int n = npos) const ;int rfind (const string &s,int pos = npos) const ;int find_first_of (char c, int pos = 0 ) const ;int find_first_of (const char *s, int pos = 0 ) const ;int find_first_of (const char *s, int pos, int n) const ;int find_first_of (const string &s,int pos = 0 ) const ;int find_first_not_of (char c, int pos = 0 ) const ;int find_first_not_of (const char *s, int pos = 0 ) const ;int find_first_not_of (const char *s, int pos,int n) const ;int find_first_not_of (const string &s,int pos = 0 ) const ;int find_last_of (char c, int pos = npos) const ;int find_last_of (const char *s, int pos = npos) const ;int find_last_of (const char *s, int pos, int n = npos) const ;int find_last_of (const string &s,int pos = npos) const ;int find_last_not_of (char c, int pos = npos) const ;int find_last_not_of (const char *s, int pos = npos) const ;int find_last_not_of (const char *s, int pos, int n) const ;int find_last_not_of (const string &s,int pos = npos) const ;
string的替换函数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 string &replace (int p0, int n0,const char *s) ;string &replace (int p0, int n0,const char *s, int n) ;string &replace (int p0, int n0,const string &s) ;string &replace (int p0, int n0,const string &s, int pos, int n) ;string &replace (int p0, int n0,int n, char c) ;string &replace (iterator first0, iterator last0,const char *s) ;string &replace (iterator first0, iterator last0,const char *s, int n) ;string &replace (iterator first0, iterator last0,const string &s) ;string &replace (iterator first0, iterator last0,int n, char c) ;string &replace (iterator first0, iterator last0,const_iterator first, const_iterator last) ;
string的插入函数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 string &insert (int p0, const char *s) ;string &insert (int p0, const char *s, int n) ;string &insert (int p0,const string &s) ;string &insert (int p0,const string &s, int pos, int n) ;string &insert (int p0, int n, char c) ;iterator insert (iterator it, char c) ;void insert (iterator it, const_iterator first, const_iterator last) ;void insert (iterator it, int n, char c) ;s.push_back ('a' );
string的删除函数: 1 2 3 4 5 6 iterator erase (iterator first, iterator last) ;iterator erase (iterator it) ;string &erase (int pos = 0 , int n = npos) ;
把字符串清空的方法有三个:
1 2 3 4 string str="Hello World" ; str="" ; str.clear (); str.erase ();
string的迭代器处理: string类提供了向前和向后遍历的迭代器iterator,迭代器提供了访问各个字符的语法,类似于指针操作,迭代器不检查范围。 用string::iterator或string::const_iterator声明迭代器变量,const_iterator不允许改变迭代的内容。常用迭代器函数有:
1 2 3 4 5 6 7 8 9 10 11 12 const_iterator begin () const ; iterator begin () ; const_iterator end () const ; iterator end () ; const_iterator rbegin () const ;iterator rbegin () ; const_iterator rend () const ;iterator rend () ;
rbegin和rend用于从后向前的迭代访问,通过设置迭代器string::reverse_iterator,string::const_reverse_iterator实现。
从string中删除所有某个特定字符: 1 2 #include <algorithm> str.erase (std::remove (str.begin (), str.end (), 'a' ), str.end ());
string类型转为int类型:
使用标准库中的atoi函数
1 2 string str='111' number = atoi (str.c_str ());
对于其他类型也都有相应的标准库函数,比如浮点型atof(),long型atol()。
采用sstream头文件中定义的字符串流对象来实现转换
1 2 3 4 5 istringstream is ("12" ) ; int i; is >> i;
int类型转为string类型:
采用标准库中的to_string函数。
1 2 int i = 12 ; cout << std::to_string (i) << endl;
采用sstream中定义的字符串流对象来实现
1 2 3 4 5 6 7 ostringstream os; int i = 12 ; os << i; cout << os.str () << endl;
字符串流对象的str函数对于istringstream和ostringstream都适用,都可以获取流中的内容。