【剖析STL】String(二)

简介: 2.3.2string类对象的容量操作 本部分会介绍以下几个容器操作:
2.3.2string类对象的容量操作
  • 本部分会介绍以下几个容器操作:
函数名称 功能说明
size(重点) 返回字符串有效字符长度
length 返回字符串有效字符长度
capacity 返回空间总大小
empty (重点) 检测字符串释放为空串,是返回true,否则返回false
clear (重点) 清空有效字符
reserve (重点) 为字符串预留空间**
relational operators (重点) relational operators (重点)
  • operator+

连接字符串,返回一个新构造的string对象,其值由lhs中的字符和rhs中的字符拼接而成。

  • getline (重点)

getline(istream& is, string& str, char delim);


🔥这个形式的函数从输入流is中读取一行文本,并将其存储在str字符串中,直到遇到指定的分隔符delim为止。如果没有指定分隔符,则默认为换行符。读取的分隔符不包括在存储的字符

  • 符串中。
int main()
{
  string line;
  char delim = ':';
  cout << "Enter a line with as delimiter :" << endl;
  getline(cin, line, delim);
  cout << "You entered:" << line << endl;
  return 0;
}

getline(istream& is, string& str);

  • 🔥这个形式的函数从输入流is中读取一行文本,并将其存储在str字符串中,直到遇到换行符为止。读取的换行符不包括在存储的字符串中。
  • operator>> (重点)

从流中提取字符串,从输入流中提取一个字符串,将该序列存储在str中,str被覆盖(之前的str值被替换)。

该函数重载运算符>>,使其行为与istream::operator>>中描述的一样,适用于c-string对象。

提取出的每个字符都会像调用push_back成员一样被添加到字符串中。

请注意,istream提取操作使用空格作为分隔符。因此,这个操作只会从流中提取可以认为是单词的内容。要提取整行文本,请参阅全局函数getline的字符串重载。

  • operator<< (重点)

向流中插入字符串,将符合str的值的字符序列插入到os中。

  • relational operators (重点)

这个后面写模拟实现的时候,会详细讲解

2.4String非常用接口说明

  • insert

在pos(或p)指定的字符之前插入额外的字符:

  • 🔥intsert不会将\0插入进去 的,string不推荐经常使用insert,能少用就少用

int main()
{
  string s1("world");
  s1.insert(0, "hello");
  cout << s1 << endl;
  s1.insert(5, " ");
  cout << s1 << endl;
  return 0;
}
  • erase

从字符串中删除字符,删除字符串的一部分,减少其长度:

  • 第一种:擦除字符串值中从字符位置pos开始并跨越len字符的部分(如果内容太短或len为string::npos,则擦除直到字符串末尾)。注意,默认实参会擦除字符串中的所有字符(类似于成员函数clear)。
  • 第二种:擦除指向p的字符。
  • 第三种:擦除[first,last)范围内的字符序列。
string s2("hello world");
  s2.erase(5, 1);
  cout << s2 << endl;

当删除的字符的个数超过了字符的个数会怎么样?

  • replace

int main()
{
  string s1("world");
  s1.insert(0, "hello");
  cout << s1 << endl;
  s1.insert(5, " ");
  cout << s1 << endl;
  return 0;
}


相关文章
|
2月前
|
存储 自然语言处理 安全
C++ STL标准库 《string原理与实战分析》
C++ STL标准库 《string原理与实战分析》
49 0
|
5天前
|
存储 算法 程序员
【STL】string
【STL】string
|
2月前
|
安全 算法 C语言
【C++进阶】深入STL之string:掌握高效字符串处理的关键
【C++进阶】深入STL之string:掌握高效字符串处理的关键
32 1
【C++进阶】深入STL之string:掌握高效字符串处理的关键
|
2月前
|
编译器 C++
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
28 1
|
2月前
|
程序员 C++
C++初阶学习第七弹——探索STL奥秘(二)——string的模拟实现
C++初阶学习第七弹——探索STL奥秘(二)——string的模拟实现
26 1
|
2月前
|
C语言 C++
C++初阶学习第六弹——探索STL奥秘(一)——标准库中的string类
C++初阶学习第六弹——探索STL奥秘(一)——标准库中的string类
23 0
|
2月前
|
算法 Linux C语言
7.学习STL和string类:版本、组件、构造、操作及应用
7.学习STL和string类:版本、组件、构造、操作及应用
|
2月前
|
编译器 C语言 C++
【C++/STL】:string类底层的模拟实现
【C++/STL】:string类底层的模拟实现
25 0
|
2月前
|
算法 C++ 容器
【C++/STL】:string类的基本使用
【C++/STL】:string类的基本使用
18 0
|
2月前
|
C++ 容器 存储
【C++语言】想学STL,先细细拿捏string类,万字详解string类 (内附精美思维导图)
【C++语言】想学STL,先细细拿捏string类,万字详解string类 (内附精美思维导图)