设为首页 加入收藏

TOP

8.11.3 访问与修改字符串(1)
2013-10-07 16:09:46 来源: 作者: 【 】 浏览:77
Tags:8.11.3 访问 修改 字符串

8.11.3  访问与修改字符串(1)

可以使用下标操作符[]来访问string对象中的任何字符,从而读取或重写它。举例如下:

  1. string sentence("Too many cooks spoil the broth.");  
  2. for(size_t i = 0; i < sentence.length(); i++)  
  3. {  
  4. if(' ' == sentence[i])  
  5. sentence[i] = '*';  
  6. }  

这段代码依次检查sentence字符串中的每个字符,看看它是否为空格,如果是,则用星号替换该字符。

用at()成员函数与用[]操作符得到的结果相同:
 

  1. string sentence("Too many cooks spoil the broth.");  
  2. for(size_t i = 0; i < sentence.length(); i++)  
  3. {  
  4. if(' ' == sentence.at(i))  
  5. sentence.at(i) = '*';  
  6. }  

这段代码与上一段代码的功能完全相同,那么使用[]与使用at()的区别在哪里呢?利用下标值的速度比使用at()函数快,但缺点是没有检查索引的有效性。如果索引超出了范围,那么使用下标操作符的结果将不确定。另一方面,at()函数稍微慢一点儿,但它会检查索引的有效性,如果索引无效,该函数就会抛出一个out_of_range异常。当索引值有可能超出范围时,可以使用at()函数,在这种情况下把代码放在try块中,并恰当地处理异常。如果我们能确信不会出现索引超出范围的情况,就使用[]操作符。

可以对字符串对象使用基于范围的for循环,迭代字符串中的所有字符:

  1. string sentence("Too many cooks spoil the broth.");  
  2. for(auto& ch : sentence)  
  3. {  
  4. if(' ' == ch)  
  5. ch = '*';  
  6. }  

这段代码也用星号替换空格,就像前面的循环一样,但这段代码要简单得多。对ch使用引用类型就可以修改字符串。

可以提取现有string对象的一部分作为一个新的string对象。例如:

  1. string sentence("Too many cooks spoil the broth.");  
  2. string substring = sentence.substr(4, 10);             // Extracts "many cooks"  

substr()函数的第一个实参是要提取的子字符串的第一个字符,第二个实参是子字符串中的字符个数。

使用字符串对象的append()函数,可以在字符串末尾添加一个或多个字符。该函数有几个版本;包括向调用该函数的对象附加一个或多个给定字符、一个字符串字面值或者一个string对象。例如:
 

  1. string phrase("The higher");  
  2. string word("fewer");  
  3. phrase.append(1, ' ');                                              // Append one space  
  4. phrase.append("the ");                                              // Append a string literal  
  5. phrase.append(word);                                                    // Append a string object  
  6. phrase.append(2, '!');                                              // Append two exclamation marks  

当执行这个代码序列后,phrase将修改为"The higher the fewer!!"。使用带两个实参的append()版本时,第一个实参是将被附加第二个实参指定的字符的次数。当调用append()函数时,它返回对调用该函数的对象的引用,因此可以在一个语句中写出上面4个append()调用:

  1. phrase.append(1, ' ').append("the ").append(word).append(2, '!'); 

也可以用append()将字符串字面值的一部分或string对象的一部分附加到一个现有字符串后面:

  1. string phrase("The more the merrier.");  
  2. string query("Any");  
  3. query.append(phrase, 3, 5).append(1, ' ');  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇8.11.2 连接字符串(2) 下一篇8.11.3 访问与修改字符串(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)