C++学习之STL(二)String
1、assign
assign方法可以理解为先将原字符串清空,然后赋予新的值作替换。
返回类型为 string类型的引用。其常用的重载也有下列几种:
a. string& assign ( const string& str ); 将str替换原字串的内容 举例: string testassign = "Hello World"; testassign.assign("Go home"); cout<<testassign<<endl; //打印结果为 go home b. string& assign ( const string& str, size_t pos, size_t n ); 将str的内容从位置pos起的n个字符作为原字串的新内容赋给原字串 string testassign = "Hello World"; testassign.assign("Come on!", 5, 2); cout<<testassign<<endl; //打印结果为 on c. string& assign ( const char* s, size_t n ); 将字符数组或者字符串的首n个字符替换原字符串内容 举例: string testassign = "Hello World"; testassign.assign("go back to China", 7); cout<<testassign<<endl; //打印结果为go back d. string& assign ( const char* s ); 将字符串或者字符数组作为新内容替换原字串 举例: string testassign = "Hello World"; char ch[20] = "go back to shanghai"; testassign.assign(ch); cout<<testassign<<endl; //打印结果为 go back to shanghai e. string& assign ( size_t n, char c ); 将原字串替换为n个字符c 举例: string testassign = "Hello World"; char ch = '?'; testassign.assign(5, ch); cout<<testassign<<endl; //打印结果为????? f. template <class InputIterator> string& assign ( InputIterator first, InputIterator last ); 需要include <iterator> 举例: string testassign = "Hello World"; testassign.assign(istream_iterator<char>(cin), istream_iterator<char>()); //输入abcde cout<<testassign<<endl; //打印结果为 abcde
2、substr
函数原型
string substr(size_type _Off = 0,size_type _Count = npos) const;
参数:
_Off:所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0。
_Count:复制的字符数目。
返回值:一个子字符串,从其指定的位置开始。
举例
string str("helloworld"); string strSub = str.substr(0, 5);
若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾。