本文摘自网络,作者php是最好的语言,侵删。
C++相对于C语言,大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的数据类型string,string类处理起来字符串因为函数的封装就显得特别方便,下面我们统计一下string类的函数
首先,想调用string类先包含其头文件#include <string>
1 | string s 1 ;//变量s 1 只是定义但没有初始化,所以其默认值为 "" 即空字符串string s 2 = "Hello World!" ;//变量s 2 在定义时同时被初始化 //例如string s 3 =s 2 ;//此时s 3 的内容和s 2 一样也是Hello World!//如果需要定义一个由很多相同字符组成的字符串时,还有另外的简便写法string s 4 (int n,char c);//s 4 是被初始化为由n的字符c组成的字符串
|
关于求字符串的长度,在C语言中,我们就可以使用strlen()函数求,C++中同样可以使用strlen(s3);这种方法求出s3字符串的实际长度,但是因为C++关于string类与C语言有本质区别,所以我们一般调用string.length()函数来求字符串的长度
1 2 | int len= 0 ;len=string.length(s 3 );
cout<< "s3字符串的长度为" <<len<<endl;
|
在上面我们提到,如果将一个string类字符串赋值给另一个string类字符串,只需要直接赋值就可以了,但是如果是string类赋值给char*类或者是char*类赋值给string类该怎么办呢?当然是不能直接赋值的,直接看代码
1 2 3 4 | //string类赋值给string类string s 1 = "hello world" ;string s 2 ;
s 2 =s 1 ;//string类赋值给char*类string s 1 = "hello world" ;char str[ 20 ]={ 0 };
strcpy_s(str,s 1 .c_str());//char*类赋值给string类char str[ 20 ]= "hello world" ;string s 2 ;
s 2 =str;
|
同时,string类型的变量也可以使用字符数组的操作来改变其里面的某一个变量,例如
1 2 | #include <iostream>#include <string>string s 1 = "this is my house" ;int i;//如果我们现在想改变里面某一个字符,可以直接将s 1 当成数组,找到对应的下标来改变i= 6 ;
s[i]= 't' ;//这样就可以将第 6 个字符改成t了
|
有了 string 类,我们可以使用”+“或”+=“运算符来直接拼接字符串,非常方便,再也不需要使用C语言中的 strcat()、strcpy()、malloc() 等函数来拼接字符串了,再也不用担心空间不够会溢出了,用”+“来拼接字符串时,运算符的两边可以都是 string 字符串,也可以是一个 string 字符串和一个C风格的字符串,还可以是一个 string 字符串和一个 char 字符。
string类的赋值
1 | 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的连接
1 | 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个字符组成的字符串
1 | void swap(string &s 2 ); //交换当前字符串与s 2 的值
|
string的查找
rfind() 和 find() 很类似,同样是在字符串中查找子字符串,不同的是 find() 函数从第二个参数开始往后查找,而 rfind() 函数则最多查找到第二个参数处,如果到了第二个参数所指定的下标还没有找到子字符串,则返回一个无穷大值4294967295
1 | 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类的插入函数:
1 | string &insert(int p 0 , const char *s);string &insert(int p 0 , const char *s, int n);string &insert(int p 0 ,const string &s);string &insert(int p 0 ,const string &s, int pos, int n);//前 4 个函数在p 0 位置插入字符串s中pos开始的前n个字符string &insert(int p 0 , int n, char c);//此函数在p 0 处插入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++ vector用法是什么
常见的C++中const常量用法分析讲解
C++总结:面向对象的基本概念
c语言数组怎么输入?
C++如何设置全局变量
如何用C++读取ini文件中的section节名
C++中=和==的区别有哪些?
C++数组初始化的种类有哪些
C++中static关键字的作用是什么?
C++中动态内存分配与命名空间介绍
更多相关阅读请进入《C++》频道 >>
转载请注明出处:木庄网络博客 » 关于C++中string类对象的用法总结