string类型

string操作

string s;       定义一个新的空string对象,命名为s
string s(cp); 定义一个新的string对象,用cp所指向的(以空字符null结束的)C风格字符串初始化该对象
string s(s2); 定义一个新的string对象,并将它初始化为s2的副本
is >> s;        从输入流is中读取一个以空白字符分隔的字符串,写入s
os << s;       将s写到输出流os中
getline(is, s) 从输入流is中读取一行字符,写入s
s1 + s2        把s1和s2串接起来,产生一个新的string对象
s1 += s2      将s2拼接在s1后面

 

 

构造string对象的其他方法

string s(cp, n)           创建一个string对象,它被初始化为cp所指向数组的前n个元素的副本
string s(s2, pos2)     创建一个string对象,它被初始化为一个已存在的string对象s2中从下标pos2开始的字符的副本
                                 如果pos2 > s2.size(),则该操作未定义
string s(s2, pos2, len2)  创建一个string对象,它被初始化为s2中从下标pos2开 始的len2个字符的副本.如果pos2 > s2.size(),则该操作未定义
                               无论len2的值是多少,最多只能复制s2.size() - pos2个字符
          注意:n,len2和pos2都是unsigned值

 

 

例:

 

 

 

string支持的容器操作

 

 

size_type                     无符号整型,足以存储此荣天气类型的最大可能容器长度
iterator                         此容器类型的迭代器类型
const_iterator               元素的只读迭代器类型
reverse_iterator            按逆序寻址元素的迭代器
const_reverse_iterator 元素的只读逆序迭代器
difference_type             足够存储两个迭代器差值的有符号整型,可为负数
value_type                    元素类型
reference                       元素的左值类型,是value_type&的同义词
const_reference            元素的常量左值类型,等效于const value_type&

 

 

C<T> c;    创建一个名为c的空容器.C是容器类型名,如vector,T是元素类型,如int或string.适用于所有容器.
C c(c2);   创建容器c2的副本c;c和c2必须具有相同的容器类型,并存放相同类型的元素.适用于所有容器
C c(b,e);  创建c,其元素是迭代器b和e标示的范围内元素的副本.适用于所有容器

C c(n,t);  用n个值为t的元素创建容器c,其中值t必须是容器类型C的元素类型的值,或者是可转换为该类型的值

 

 

c.push_back(t)     在容器c的尾部添加值为t的元素.返回void类型
c.insert(p,t)      在迭代器p所指向的元素前面插入值为t的新元素.返回指向新元素的迭代器
c.insert(p,n,t)    在迭代器p所指向的元素前面插入n个值为t的新元素.返回void类型
c.insert(p,b,e)    在迭代器p所指向的元素前面插入由迭代器b和e标记的范围内的元素.返回void类型

 

 

c.size()          返回容器c中的元素个数.返回类型为c::size_type
c.max_size() 返回容器c可容纳的最多元素个数
                     返回类型为c::size_type
c.empty()      返回标记容器大小是否为0的布尔值
c.resize(n)    调整容器c的长度大小,使其能容纳n个元素
                     如果n<c.size(),则删除多出来的元素;否则,添加采用值初始化的新元素
c.resize(n,t)   调整容器c的长度大小,使其能容纳n个元素.所有新添加的元素值都为t

 

 

c[n]            返回下标为n的元素的引用
                如果n<0或n>=c.size(),则该操作未定义
c.at(n)         返回下标为n的元素的引用.如果下标越界,则该操作未定义

 

c.begin()      返回一个迭代器,它指向容器c的第一个元素
c.end()        返回一个迭代器,它指向容器c的最后一个元素的下一位置
c.rbegin()     返回一个逆序迭代器,它指向容器c的最后一个元素
c.rend()       返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

 

 


c.erase(p)        删除迭代器p所指向的元素
                        返回一个迭代器,它指向被删除元素后面的元素.如果p指向容器内的最后一个元素,则返回的迭代器指向容器的超出末端的下一位置.如果p本身就是指向超出末端的下一位置的迭代器,则该函数为定义
c.erase(b,e)     删除迭代器b和e所标记的范围内所有的元素
                        返回一个迭代器,它指向被删除元素段后面的元素.如果e本身就是指向超出末端的下一位置的迭代器,则返回的迭代器也指向容器的超出末端的下一位置
c.clear()            删除容器c内的所有元素.返回void

 

c1 = c2            删除容器c1的所有元素,然后将c2的元素复制给c1.c1和c2的类型(包括容器类型和元素类型)必须相同
c1.swap(c2)    交换内容:调用完该函数后,c1中存放的是c2原来的元素,c2中存放的则是c1原来的元素.c1和c2的类型必须相同.该函数的执行速度通常要比将c2的元素复制到c1的操作快
c.assign(b,e)   重新设置c的元素:将迭代器b和e标记的范围内所有的元素复制到c中

                        b和e必须不是指向c中元素的迭代器
c.assign(n,t)   将容器c重新设置为存储n个值为t的元素

 

 

 

string类型提供容器操作意味着可将操纵vector对象的程序改写为操纵string对象

例:

 

 

 

 

 

 

与容器共有的string操作

s.insert(p, t)       在迭代器p指向的元素之前插入一个值为t的新元素.返回指向新插入元素的迭代器
s.insert(p, n, t)    在迭代器p指向的元素之前插入n个值为t的新元素.返回void
s.insert(p, b, e)    在迭代器p指向的元素之前插入迭代器b和e标记范围内所有的元素.返回void
s.assign(b, e)       用迭代器b和e标记范围内的元素替换s.对于string类型,该操作返回s;对于容器类型,则返回void
s.assign(n, t)       用值为t的n个副本代替s.对于string类型,该操作返回s;对于容器类型,则返回void
s.erase(p)           删除迭代器p指向的元素.返回一个迭代器,指向被删除元素后面的元素
s.rease(b, e)        删除迭代器b和e标记范围内所有的元素.返回一个迭代器,指向被删除元素段后面的第一个元素

 

 

string类型特有的版本

s.insert(pos, n, c)      在下标为pos的元素之前插入n个字符c
s.insert(pos, s2)        在下标为pos的元素之前插入string对象s2的副本
s.insert(pos, s2, pos2, len)    在下标为pos的元素之前插入s2中从下标pos2开始的len个字符
s.insert(pos, cp, len)  在下标为pos的元素之前插入cp所指向数组的前len个字符
s.insert(pos, cp)       在下标为pos的元素之前插入cp所指向的以空字符结束的字符串副本
s.assign(s2)            用s2的副本替换s
s.assign(s2, pos2, len) 用s2中从下标pos2开始的len个字符副本替换s
s.assign(cp, len)       用cp所指向数组的前len个字符副本替换s
s.assign(cp)            用cp所指向的以空字符结束的字符串副本替换s
s.erase(pos, len)       删除从下标pos开始的len个字符
                  除非特殊声明,上述所有操作都返回s的引用

 

 

 

 

只适用于string类型的操作

           子串操作

s.substr(pos, n)   返回一个string类型的字符串,它包含s中从下标pos开始的n个字符
s.substr(pos)      返回一个string类型的字符串,它包含从下标pos开始到s末尾的所有字符
s.substr()           返回s的副本

 

 

 

例:

 

 

修改string对象的操作(args在表9-18中定义)

s.append(args)            将args串接在s后面.返回s的引用
s.replace(pos, len, args) 删除s中从下标pos开始的len个字符,用args指定的字符替换之.返回s的引用
                  在这个版本中,args不能为b2, e2
s.replace(b, e, args)     删除迭代器b和e标记的范围内所有的字符,用args替换之.返回s的引用
                  在这个版本中,args不能为s2, pos2, len2


       表9-18  append和replace操作的参数:args

s2                        string类型的字符串s2
s2, pos2, len2      字符串s2中从下标pos2开始的len2个字符
cp                        指针cp指向的以空字符结束的数组
cp, len2               cp指向的以空字符结束的数组中前len2个字符
n, c                       字符c的n个副本
b2, e2                 迭代器b2和e2标记的范围内所有字符


 

 

 

 

 

 

string类型的查找操作

 

这些操作全都返回string::size_type类型的值,以下标形式标记查找匹配所发生的位
置;或者返回一个名为string::npos的特殊值,说明查找没有匹配.string类将npos定
义为保证大于任何有效下标的值.

      表9-19  string类型的查找操作(其参数args在表9-20中定义)

s.find(args)              在s中查找args的第一次出现
s.rfing(args)             在s中查找args的最后一次出现
s.find_first_of(args)     在s中查找args的任意字符的第一次出现
s.find_last_of(args)      在s中查找args的任意字符的最后一次出现
s.find_first_not_of(args) 在s中查找第一个不属于args的字符
s.find_last_not_of(args)  在s中查找最后一个不属于args的字符


      表9-20  string类型提供的find操作的参数

c, pos    在s中,从下标pos标记的位置开始,查找字符c.pos的默认值为0
s2, pos   在s中,从下标pos标记的位置开始,查找string对象s2.pos的默认值为0
cp, pos   在s中,从下标pos标记的位置开始,查找指针cp所指向的c风格的以空字符结束的字符串.pos的默认值为0
cp, pos,n 在s中,从下标pos标记的位置开始,查找指针cp所指向数组的前n个字符.pos和n都没有默认值


默认情况下,find操作(以及其他处理字符的string操作)使用内置操作符比较string
字符串中的字符.因此,这些操作(以及其他string操作)都区分字母的大小写.

 

 

例:

 

 

 

string对象的比较

         表9-21 string类型的compare操作
s.compare(s2)                   比较s和s2
s.compare(pos1, n1, s2)         让s中从pos下标位置开始的n1个字符与s2做比较
s.compare(pos1, n1, s2, pos2, n2)让s中从pos1下标位置开始的n1个字符与s2中从pos2下标位置开始的n2个字符做比较
s.compare(cp)              比较s和cp所指向的以空字符结束的字符串
s.compare(pos1, n1, cp)    让s中从pos1下标位置开始的n1个字符与cp所指向的字符串做比较
s.compare(pos1, n1, cp, n2)让s中从pos1下标位置开始的n1个字符与cp所指向字符串的前n2个字符做比较

 

compare函数返回下面列出的三种可能值之一:
(1) 正数,此时s1大于args所代表的string对象.
(2) 负数,此时s1小于args所代表的string对象.
(3) 0,此时s1恰好等于args所代表的string对象.

 

例:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值