繁体   English   中英

使用string :: reverse_iterator检索子字符串

[英]Retrieving substring using string::reverse_iterator

一个由两个std :: string :: reverse_iterators表示的子字符串,我如何将它们复制出来并以正常顺序而不是反向地分配给新字符串?

一个senario可能是:一串“ Hello world-John”,从尾部探查并使用以下命令遇到“-”:

      std::string::reverse_iterator rIter
         = std::find(str.rbegin(), str.rend(), isDelimiterFunc);

竖线指向“-”。 我想让“ John”出局,但如果这样做:

  std::string out(str.rbegin(), rIter - 1);

我会得到“ nhoj”。

多谢你们!

您可能想使用string :: rfind解决该问题。

std::string f;
auto pos = f.rfind("-");
std::string f2= f.substr(pos);

否则,您可以通过base()成员函数获取reverse_iterator的基础iterator ,并且它返回一个不合一的迭代器。

按照要求...

按照@pmr的答案(提供了一种更简单的方法)的指导,可以在std::string搜索多个字符之一,可以使用std::string::find_last_of()

std::string str("Hello world-John");
const size_t idx = str.find_last_of("-x!@~");
if (std::string::npos != idx)
{
    std::cout << str.substr(idx+1) << "\n";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM