字符串切片在C++中究竟是如何工作的(使用字符串)
How exactly does string slicing work in C++ (using string)?
我有以下代码:
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(构造函数(,并且特定的构造函数需要两个参数。
- 参数是一个";迭代器";指向起始字符
- 参数是一个";迭代器";指向结束字符
这是bccnsoft文档上的链接:
由起始迭代器和结束迭代器表示的字符串
以下是cppreference文档上的链接:
构造包含范围(第一个、最后一个(内容的字符串
以下是cplusplus文档的链接:
(7( 范围构造器
相关文章:
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 在 c++ 中对字符串进行操作的关系运算符无法按预期工作
- C++ "noskipws"没有按预期工作,如何正确允许字符串中的空格?
- C++20字符串文本模板参数工作示例
- 将双精度值转换为 char 变量时字符串流如何工作
- 为什么在C++中使用关系运算符创建的模板函数不能对字符串正常工作?
- 为什么 C 样式字符串的工作空指针检查不?
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- 在 stl 中的字符串中擦除关键字的工作?
- scanf() 语句中"%*[^n]"的格式字符串指示什么?分配抑制器 (*) 和否定扫描集 ([^) 如何协同工作?
- 使用 for 循环打印字符串数组无法正常工作 (C++)
- 字符串文字到 char 数组的转换如何在C++中实际工作
- 如何让我的构造函数和函数工作,以便我的 main() 能够同时显示字符串和 int 数据
- 如何使用字符串更改此插入功能以在链接列表中工作
- 如何与C 字符串中的非ASCII字符一起工作
- 读取进程内存无法正常工作,使用 UTF16 字符串
- strcpy() 和 strcat() 在 Turbo C++ 中无法正常工作(从字符串 litteral 初始化数组时
- C-字符串的获取线函数无法正常工作
- Getline 无法按预期使用字符串工作
- 如何使类作为printf_s / sprintf_s的字符串工作