查找只传递2个迭代器的子字符串
Finding a substring passing only 2 iterators?
我有一个奇怪的问题。我的解决方案是进入一些高性能库。我的任务之一是改变接口,使用内部字符串描述符格式,它是一个指针和一个长度,而不是std字符串的参数。然而,其中一个函数在这个字符串中搜索并找到一个模式,并将该模式之后的字符串的其余部分复制到缓冲区中。
我添加了一个更改,将整个迭代器范围赋值到缓冲区{std string的自定义分配器版本},然后擦除模式之前的所有字符。这个修复被拒绝了,说我可以做得更好。
我现在的问题是。我的输入字符串实际上是一对迭代器。我可能拥有也可能不拥有end迭代器所指向的字节,也就是说,我不能安全地解引用它。
模式std::find(start, end, value);
不允许value为字符串。
strstr(start, value);
接受一个以空结尾的字符串。我的代码有链接,以促进。是否有boost实用程序或stl算法接受两个字符串迭代器并返回指向字符串模式的第一个字节的迭代器?当然可以。有一个脑残的解决方案,创建一个临时字符串,然后重新分配。
我可以避免分配吗?
std::search(begin, end, pat_begin, pat_end);
为我做了这项工作。如有可能,请多提建议
相关文章:
- 如何在 c++ 中将字符串迭代器变量传递给函数?
- 字符串迭代器永远不会达到 std::string::end()
- 为什么C++字符串迭代器不检查错误?
- 将字符串::迭代器转换为标准::字符串
- 如何将字符串迭代器指向的数据推回字符串向量
- 为什么删除字符串迭代器会产生const char参考
- 字符串迭代器不兼容错误,当我将字符串转换为矢量<byte>时
- 从数组列表中的字符串迭代器获取 int dat<struct>
- 字符串迭代器不可用C 问题
- C++ 字符串迭代器"find first of"
- 表达式:字符串迭代器不兼容,调用"SetDllDirectory"
- 字符串迭代器和理解函数
- 为什么我的 forloop 在我的 lexical_words 函数中没有将字符串数组('keyWords")中的单词与字符串迭代器中的单词进行比较?
- UTF-8字符串迭代器
- 字符串迭代器+偏移量超出范围
- 字符串迭代器与读取每一行不兼容
- 字符串::迭代器必然是random_access_iterator
- 使用类型特征为字符串迭代器专门化模板函数
- 在find_if算法中将 char* 转换为字符串::迭代器
- 取消引用字符串迭代器无法编译