《C++ Primer》读书笔记-第九章 05 额外的string操作

作者:马志峰
链接:https://zhuanlan.zhihu.com/p/24498537
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:

  • 文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有。
  • 原书有更加详细、精彩的释义,请大家购买正版书籍进行学习。
  • 本文仅作学习交流使用,禁止任何形式的转载

正文

  • 构造
  • substr
  • 修改
  • 搜索
  • 比较
  • 数值转换

构造

string s1;  
string s2(s1); string s2 = s1;  
string s3("val"); string s3 = "val";  
string s4(n, 'c');  

string s{
      
      'a', 'b', 'c'};  
string s = {
      
      'a', 'b', 'c'};  
string s(beg,end);  
string s(n);  

string s(cp,n); //n可选  
string s(s2, pos2);  
string s(s2, pos2, len2);

具体可以参与书上的内容,以及下面的网址

std::basic_string - cppreference.com

substr

s.substr(pos, n);

返回一个string,包含s中从pos开始的n个字符的拷贝

n的默认值为 s.size()-pos

pos不能越界,pos+n可以,只拷贝到string末尾

改变string的其他方法

  1. 顺序容器的assign、insert、erase、赋值操作
  2. 接受下标的insert和erase版本
  3. 接受c风格字符数组的insert和assign版本
  4. append和replace函数

具体参考 P323 表9.13

搜索操作

返回一个string::size_type类型的值,表示匹配发生位置的下标

如果搜索失败,返回一个名为string::npos的static成员

string::size_type是一个unsigned类型,应当避免使用int或其他带符号类型来保存搜索的返回值

s.find(args)  
s.find_first_of(args)  
s.find_first_not_of(args)

args必须是以下形式这一:

  • c, pos //从位置pos开始查找字符c,pos默认为0
  • s2, pos //查找字符串s2,pos默认为0
  • cp, pos //查找c风格字符串,pos默认为0
  • cp, pos, n //查找指针cp指向数组的前n个字符, pos和n无默认值
find----rfind  
find_first_of----find_last_of  
find_first_not_of----find_last_not_of

compare

s.compare(s2);  
s.compare(pos1, n1, s2);  
s.compare(pos1, n1, s2, pos2, n2);  
s.compare(cp);  
s.compare(pos1, n1, cp);  
s.compare(pos1, n1, cp, n2);

数值转换

在内存中,数的字符表示不同于其数值

15:0000000000001111
“15”:0011000100110101

新标准引入了多个转换函数

to_string(val);  

//转换成整数  
//p是第一个非数值字符的下标,默认值为0  
//b是基数,默认值为10  
stoi(s, p, b);  
stol(s, p, b);  
stoul(s, p, b);  
stoull(s, p, b);  

//转换成浮点  
stof(s,p)  
stod(s,p)  
stold(s,P)

猜你喜欢

转载自blog.csdn.net/qq_26751117/article/details/54025427