1
1
恐怕不行,最后需要一个指向字符串末尾的指针
|
2
4
没有任何显式迭代器 班 ,但常规原始指针也是有效的迭代器。不过,C字符串的问题是,它们没有本机端迭代器,这使得它们在基于范围的for循环中不可用——至少是直接的。。。 不过,您可能需要尝试以下模板:
用法:
它最初设计用于在main的以空结尾的argv上进行迭代,但是可以使用 任何 指向以空结尾的数组的指针-C字符串也是。。。 秘密是与哨兵进行比较,哨兵实际上进行完全不同的比较(当前指针指向终止的空值(指针))。。。 编辑:前C + + 17变体:
|
3
4
实际上,是的-有点。在c++17中。
C++ 17介绍
请注意,尽管从
例子:
参见示例输出 here |
4
3
对。指针是数组的迭代器。C字符串是(以空结尾)的数组
就像所有其他迭代器一样,要有一个范围,就需要有一个结束迭代器。
如果您知道或可以假设一个数组完全包含字符串而不包含其他内容,那么您可以使用
对于空终止符,必须小心一点。必须记住,数组的整个范围包含字符串的空终止符。如果希望迭代器范围表示不带结束符的字符串,则从数组的结束迭代器中减去一个,这将解释上一段中的减法。
如果没有数组,但只有一个指针(begin iterator),则可以通过按字符串长度推进开始来获得结束迭代器。这个过程是一个常量操作,因为指针是随机访问迭代器。如果你不知道长度,你可以打电话给
例子,
如果您不知道字符串的长度:
指针是一个随机访问迭代器。所有随机访问迭代器也是正向迭代器。指针满足链接迭代器概念中列出的所有要求。 |
5
2
可以编写这样的迭代器,如下所示:
虽然不幸的是没有提供标准的,它可能是模板
|
6
1
如果您有一个字符串文本,则可以不使用
字符串文本的演示代码:
|
7
1
为了达到最终的安全性和灵活性,最终包装迭代器,并且必须携带一些状态。 问题包括:
请注意,如果在容器的范围之外随机查找它,并且它可以合法地在string-view.end()之后进行查找,则“不是迭代器的问题”。这样一个中断的迭代器不能再递增到end()也是相当标准的。 这些条件中最痛苦的是可以对end进行减法、减法和取消引用(通常不能,但对于string,它是一个空字符)。这意味着end对象需要一个标志,表明它是end和start的地址,这样,如果发生任何一个操作,它都可以使用strlen()找到实际的end。 |
8
0
迭代器是指针的泛化。特别是,它们的设计使得指针是有效的迭代器。
注意
pointer specializations of
除非你有其他方法知道字符串的结尾,调用
|
9
0
抱歉,迭代器通常是从iterable实例获得的。作为
顺便说一下,如果您需要迭代
但问题是不能在C++中使用迭代器,因为
|
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Manan Girdhar · 拆分字符串并仅在java中使用第二部分 2 年前 |
AnxiousLuna · Python使用len()获取数组索引数 2 年前 |
antonoyaro8 · 数据帧中每列上的Grepl 2 年前 |