字符串切片在C++中究竟是如何工作的(使用字符串)

How exactly does string slicing work in C++ (using string)?

本文关键字:字符串 工作 切片 C++ 究竟 何工作      更新时间:2024-09-23

我有以下代码:

string str1 = "first string";
string str2(str1, 6, 6)
// Output: string
  • 第一个参数指向必须切片的变量
  • 第二个参数告诉起始索引(从1开始(
  • 第三个参数告诉您想从str1中提取多少个字符-基本上是结束索引

我理解以上所有内容然而,当我遇到下面的代码块时,我感到非常困惑。

为什么这样做?它没有3个参数。

string str3(str1.begin(), str1.begin() + 5); // Why no 3rd param ? 
// Output: first

同样在这里,第二个参数从5索引,而不是从开始(就像第一个例子中一样(。有人能解释一下b/w代码块1和2有什么不同吗?

谢谢。

正如注释中提到的@Ch3steR,它们都是actor(构造函数(,并且特定的构造函数需要两个参数。

  1. 参数是一个";迭代器";指向起始字符
  2. 参数是一个";迭代器";指向结束字符

这是bccnsoft文档上的链接:

由起始迭代器和结束迭代器表示的字符串

以下是cppreference文档上的链接:

构造包含范围(第一个、最后一个(内容的字符串

以下是cplusplus文档的链接:

(7( 范围构造器