欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于C++中string类对象的用法总结

程序员文章站 2022-05-06 22:36:06
...

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字符串的长度为"<<len<<endl;

在上面我们提到,如果将一个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类对象的用法总结的详细内容,更多请关注其它相关文章!

相关标签: C++