C++ string类型的一些操作

整理自C++ Primer第四版

一、定义和初始化

string  str;    默认构造函数,str为空的字符串

string  str(“abcdef”);   将str初始化为相应的字符串字面值

string   str(n,‘a’);   将str初始化为n个‘a’的字符串

string  str(cp);    其中cp为一个指向C风格字符串的指针  如   char * cp=“abcdefg”;

string  str(cp,n);    将str初始化为cp指向的字符数组的前n个字符  如:char* cp=“abcdefg”;string  str1(cp,3);则str1=abc;  需要注意越界问题

string  str(str1);     将str初始化为str1的一个副本

string   str(str1,pos)   将str初始化为字符串str1从pos位置开始到末尾的字符串

string   str(str1,pos,n)  将str初始化为字符串str1从pos位置开始的n个字符,若超出字符串str1末尾,则为pos到str1末尾的字符串 (无越界问题)

string  str(iter1,iter2);     将str初始化为迭代器iter1与iter2所指向的字符串,包括iter1但不包括iter2,iter1与iter2指向同一个字符串且iter2>=iter1

二、常用操作

str.empty()               判断str是否为空字符串,若是则返回true  否则返回false;

str.size()                  返回str字符串的长度

str1=str2                 将str2直接赋值给str1

str1=str1+str2        将str2字符串加在str1后

str[n]                         取str字符串中的第n+1个元素,可以对其赋值改变str字符串

以下函数包含在cctype头文件中,c为一个字符

isalnum(c)        判断c是否为数字或字母

isalpha(c)         判断是否为字母

isdigit(c)            判断是否为数字

islower(c)          判断是否为小写字母

isupper(c)         判断是否为大写字母

tolower(c)          返回c对应的小写字母

toupper(c)         返回c对应的大写字母

三、修改string的方法

插入操作,str.insert()函数:

str.insert(p,c)                               在位置p的元素之前插入c,其中p为str字符串的下标或者指向str的迭代器,若p为迭代器,则返回指向新元素的迭代器

str.insert(p,n,c)                           在位置p的元素之前插入n个c,其中p为str字符串的下标或者指向str的迭代器,返回void

str.insert(p,b,e)                           在迭代器p的元素之前插入迭代器b,e范围内的所有元素,返回void

str.insert(pos,str1)                     在下标pos的元素之前插入str1字符串的副本

str.insert(pos,str1,pos2,n)       在下标pos的元素之前插入str2字符串从下标pos2开始的n个元素

str.insert(pos,cp,n)                    在下标pos的元素之前插入cp指向的字符数组的n个字符,注意越界问题

str.insert(pos,cp)                       在下标pos的元素之前插入cp指向的字符数组,(以/n结束)

替换操作,str.assign()函数:

str.assign(b,e)                           将str替换为迭代器b,e指向的范围内的元素,迭代器为指向string的迭代器则返回str,若为指向容器的元素返回void

str.assign(n,c)                           将str替换为n个c

str.assign(str1)                          将str替换为str1

str.assign(str1,pos,n)               将str替换为str1从pos开始的n个元素

str.assign(cp,n)                          将str替换为cp指向的字符数组的前n个元素

str.assign(cp)                             将str替换为cp指向的字符数组

删除操作,str.erase():

str.erase(p)                                 删除str中迭代器p指向的元素,返回指向被删除元素的后一个元素的迭代器

str.erase(b,e)                              删除str中迭代器b,e在范围内的元素,返回指向被删除元素段的后一个元素的迭代器

str.erase(pos,n)                         删除str中下标pos开始的n个字符

上述函数无特别说明的均返回string的引用

四、string类型的操作

取str字符串的子串str.substr()函数:

str.substr(pos,n)      返回从下标pos开始的n个字符的字符串

str.substr(pos)          返回从下标pos开始到末尾的字符串

str.substr()                 返回str的副本

删除指定范围的字符串并插入新的字符  str.replace()函数:

str.replace(pos / b, n / e, str1)           删除下标pos开始的n个元素(或迭代器b、e标记的元素),并在删除的位置插入str1

str.replace(pos / b, n / e, cp)                  删除下标pos开始的n个元素(或迭代器b、e标记的元素),并在删除的位置插入cp指向的字符数组(需以空字符结束)

str.replace(pos / b, n / e, cp, n1)              删除下标pos开始的n个元素(或迭代器b、e标记的元素),并在删除的位置插入cp指向的字符数组开始的n1个字符

str.replace(pos / b, n / e, n1, c)              删除下标pos开始的n个元素(或迭代器b、e标记的元素),并在删除的位置插入n1个c字符

str.replace(pos , n , b, e)              删除下标pos开始的n个元素,并在删除的位置插入迭代器b、e标记范围内的字符

str.replace(b ,  e, str1, pos, n1)   删除迭代器b、e标记的元素,并在删除的位置插入字符串str1从下标pos开始的n1个元素

在字符串末尾插入新的字符串  str.append()函数:

str.append(str1)                       类似+操作符的功能,将str1链接在str的后面

str.append(str1,pos,n)           将str1从下标pos元素开始的n个元素连接在str的后面

str.append(cp)                         将cp指向的字符串数组(需要以空字符结尾)连接在str的后面

str.append(cp,n)                      将cp指向的字符串数组的前n个元素连接在str的后面

str.append(n,c)                         将n个c字符连接在str的后面

str.append(b,e)                         将迭代器b、e标记范围内的字符连接在str的后面

查找指定的字符  str.find()函数:

str.find(c, pos)                     str中从下标pos开始,查找字符c,pos默认为0

str.find(str1, pos)                     str中从下标pos开始,查找字符串str1,pos默认为0

str.find(cp, pos)                     str中从下标pos开始,查找cp指向的字符数组(以空字符结束),pos默认为0

str.find(cp, pos,n)                     str中从下标pos开始,查找cp指向的字符数组的前n个字符,无默认值

str.find查找第一次出现,str.rfind()查找最后一次出现,str.find_first_of()查找参数中任意字符的第一次出现,str.find_last_of()插在参数中任意字符的最后一次出现

str.find_first_not_of()查找第一个不在参数中的字符,str.find_last_not_of()查找最后一个不在参数中的字符,其他函数的参数均与find函数相同

返回类型为 string::size_type

字符串的比较操作  str.compare()函数:

str.compare(str1)                   比较str与str1

str.compare(pos, n, str1)      比较str从下标pos开始的n个元素与str1

str.compare(pos1, n1, str1, pos2 ,n2)    比较str从下标pos1开始的n1个字符与str1从下标pos2开始的n2字符

str.compare(cp)                      比较str与cp指向的字符数组

str.compare(pos , n, cp)         比较str从下标pos开始的n个字符与cp指向的字符数组

Str.compare(pos, n,cp,n1)   比较str从下标pos开始的n个字符与cp指向的字符数组的前n1个字符

返回正数和str字符串比参数中的字符串大,返回负数表示str字符串比参数的字符串小,返回0则表示相等

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值