现在的位置: 首页 > 综合 > 正文

c++ string类的操作函数总结

2018年05月28日 ⁄ 综合 ⁄ 共 2400字 ⁄ 字号 评论关闭

二、标准的C++string类

string类在很多地方改动了c字符串。首先,在创建数组时不必再为它的大小是否能够容纳字符串变量而担心,因为string类接管了所有的内存管理任务。其次,string类允许使用重载运算符,因此可以使用(+、=、==、<、>)等运算符操作字符串对象:s3=s1+s2;

1.string对象的定义:

1)string  s(“man”);   2)string s=”man”;    3)string s;(空的string变量)

2.常用的成员函数(限所看书中用法):

1) swap():它的功能是将两个字符串对象的值做调换,一个对象调用它,另一个对象作为它的参数。如 s1.swap(s2);

2)getline():在string类中它能够读取带有空格的多行输入。

getline()的第一个参数是流对象,这里将会出现输入信息,在此处是cin。

                        第二个参数是放置文本的string对象obj;

                        第三个参数是指定终止输入的字符,默认为换行符”\n“.

getline()与c字符串的函数get()是相似的,只是前者是string标准。

3)find():在调用它的字符串对象中查找作为参数的字符串,(最左边的字符位置的编号是0)。find(const string &s ,int pos = 0)从pos开始查找子字符s,并返回子字符                    串第一次出现的位置

find_frist_of():查找所有的字符组,并且返回他找到的第一个字符的位置。如:find_frist_of(“spde”)为查找这些字符”s“、”p“、”d“、”e“中在字符串中第一个出现的                             字符,并且返回该字符所在的值。

find_frist_not_of():查找第一个不属于所给出的字符组的字符,并返回该字符的位置。

4)erase():将子串从字符串中移除。

                            string &erase(int pos = 0,
int n = npos);//删除pos开始的n个字符,返回修改后的字符串

5)replace():用一个字符串替换另一个字符串。

                              string &replace(int p0,
int n0,const
char *s, int n);//删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符

6)insert():将第二个参数指定的字符串插到第一个参数提供的位置。

                            string &insert(int p0,const string &s,
int pos, int n);//前4个函数在p0位置插入字符串s中pos开始的前n个字符

7)append():在句尾添加字符(’’),不是字符串。

                             string &append(const
char *s);//把s连接到当前字符串的结尾

                             string &operator +=(const string &s);//把s连接到当前字符串的结尾

8)compare():两个对象做比较,返回int类型数值(-1,0,1)。//运算符">","<",">=","<=","!="均被重载用于字符串的比较;

                             int compare(int pos,
int n,const string &s,int pos2,int n2)const;//比较当前字符串从pos开始的n个字符组成的字符串与s中pos2开始

                              的n2个字符组成的字符串的大小

9)substr():返回调用它的字符串的子串。

                            string substr(int pos = 0, int n = npos) const; //
返回pos开始的n个字符组成的字符串

10)at():类似于[]来从对象中取出单独的字符。参数为字符串中字符的位置。

                         char &at(int n); 
//operator[]和at()均返回当前字符串中第n个字符的位置

                          //但at函数提供范围检查,当越界时会抛出out_of_range异常
                          //下标运算符[]不提供检查访问。

*11)copy:将string对象复制为char类型的数组。实际上把string类编程c字符串。但记住:复制之后需要将一个空字符(’\0’)插入最后一个字符之后,char[lengeh]=0                  char[length]=’\0’;

                   int copy(char *s,
int n, int pos = 0)
const;//把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目

对比:在string类中:=相当于c字符串中的复制的作用,而copy是将string对象复制为char类型的数组。

12)length和size作用一样,都是返回字符串的长度。(size为适应STL而产生)

13)类的属性描述

int capacity()
const
; //返回当前容量(即string中不必增加内存即可存放的元素个数)

bool empty() const;//当前字符串是否为空

void resize(int len,
char c); //把当前字符串大小置为len,如果len比原字符串小,则从后面开始截断,如果比原字符串大,用字符c填充不足的部分。

抱歉!评论已关闭.