关于C++中string类对象的用法总结
C++相对于c语言,大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的数据类型string,string类处理起来字符串因为函数的封装就显得特别方便,下面我们统计一下string类的函数
首先,想调用string类先包含其头文件#include string>
string s1; //变量s1只是定义但没有初始化,所以其默认值为""即空字符串string s2="Hello World!"; //变量s2在定义时同时被初始化/*string类的变量可以相互之间直接赋值,不需要像C语言一样,使用strcpy()函数一个字符一个字符的去赋值*///例如string s3=s2; //此时s3的内容和s2一样也是Hello World!//如果需要定义一个由很多相同字符组成的字符串时,还有另外的简便写法string s4(int n,char c); //s4是被初始化为由n的字符c组成的字符串
关于求字符串的长度,在C语言中,我们就可以使用strlen()函数求,C++中同样可以使用strlen(s3);这种方法求出s3字符串的实际长度,但是因为C++关于string类与C语言有本质区别,所以我们一般调用string.length()函数来求字符串的长度
int len=0; len=string.length(s3); cout"s3字符串的长度为"lenendl;
在上面我们提到,如果将一个string类字符串赋值给另一个string类字符串,只需要直接赋值就可以了,但是如果是string类赋值给char*类或者是char*类赋值给string类该怎么办呢?当然是不能直接赋值的,直接看代码
//string类赋值给string类string s1="hello world"; string s2; s2=s1; //string类赋值给char*类string s1="hello world"; char str[20]={ 0} ; strcpy_s(str,s1.c_str()); //char*类赋值给string类char str[20]="hello world"; string s2; s2=str;
同时,string类型的变量也可以使用字符数组的操作来改变其里面的某一个变量,例如
#include iostream> #include string> string s1="this is my house"; int i; //如果我们现在想改变里面某一个字符,可以直接将s1当成数组,找到对应的下标来改变i=6; s[i]='t'; //这样就可以将第6个字符改成t了
有了 string 类,我们可以使用”+“或”+=“运算符来直接拼接字符串,非常方便,再也不需要使用C语言中的 strcat()、strcpy()、malloc() 等函数来拼接字符串了,再也不用担心空间不够会溢出了,用”+“来拼接字符串时,运算符的两边可以都是 string 字符串,也可以是一个 string 字符串和一个C风格的字符串,还可以是一个 string 字符串和一个 char 字符。
string类的赋值
string & operator=(const string & s); //把字符串s赋给当前字符串 string & assign(const char *s); //用c类型字符串s赋值string & assign(const char *s,int n); //用c字符串s开始的n个字符赋值string & assign(const string & s); //把字符串s赋给当前字符串string & assign(int n,char c); //用n个字符c赋值给当前字符串string & assign(const string & s,int start,int n); //把字符串s中从start开始的n个字符赋给当前字符串string & assign(const_ITerator First,const_itertor last); //把first和last迭代器之间的部分赋给字符串
string的连接
string & oPErator+=(const string & s); //把字符串s连接到当前字符串的结尾 string & append(const char *s); //把c类型字符串s连接到当前字符串结尾string & append(const char *s,int n); //把c类型字符串s的前n个字符连接到当前字符串结尾string & append(const string & s); //同operator+=()string & append(const string & s,int pos,int n); //把字符串s中从pos开始的n个字符连接到当前字符串的结尾string & append(int n,char c); //在当前字符串结尾添加n个字符cstring & append(const_iterator first,const_iterator last); //把迭代器first和last之间的部分连接到当前字符串的结尾
string的子串string substr(int pos = 0,int n = npos) const;
//返回pos开始的n个字符组成的字符串
void swap(string & s2); //交换当前字符串与s2的值
string的查找
rfind() 和 find() 很类似,同样是在字符串中查找子字符串,不同的是 find() 函数从第二个参数开始往后查找,而 rfind() 函数则最多查找到第二个参数处,如果到了第二个参数所指定的下标还没有找到子字符串,则返回一个无穷大值4294967295
int find(char c, int pos = 0) const; //从pos开始查找字符c在当前字符串的位置int find(const char *s, int pos = 0) const; //从pos开始查找字符串s在当前串中的位置int find(const char *s, int pos, int n) const; //从pos开始查找字符串s中前n个字符在当前串中的位置int find(const string & s, int pos = 0) const; //从pos开始查找字符串s在当前串中的位置int rfind(char c, int pos = npos) const; //从pos开始从后向前查找字符c在当前串中的位置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; //从pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值
string类的插入函数:
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); //前4个函数在P0位置插入字符串s中pos开始的前n个字符string & insert(int p0, int n, char c); //此函数在p0处插入n个字符citerator insert(iterator it, char c); //在it处插入字符c,返回插入后迭代器的位置void insert(iterator it, const_iterator first, const_iterator last); //在it处插入[first,last)之间的字符void insert(iterator it, int n, char c); //在it处插入n个字符c
关于C++中string类对象的用法,今天讲了一点基础。
相关推荐:
标准C++中的string类的用法总结
关于c++中的引用总结
以上就是关于C++中string类对象的用法总结的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 关于C++中string类对象的用法总结
本文地址: https://pptw.com/jishu/593162.html