查找失败时 boost string_algo 返回值

发布于 2024-11-04 13:55:31 字数 279 浏览 2 评论 0原文

我想首先使用 boost::string_algo 的 find 找到一行上的第一个空格:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");

不过,我似乎在文档中找不到任何说明如果找不到空格则返回什么的内容。我是否需要针对 line.end() 或其他内容测试 token_range.end() ?

谢谢!

I want to find the first space on a line using boost::string_algo's find first:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");

I can't seem to find anything in the docs that says what this returns if it doesn't find a space, though. Do I need to test token_range.end() against line.end() or something?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千仐 2024-11-11 13:55:31

我认为你应该只测试 token_range.empty(),如下所示:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");
if (!token_range.empty())
{
    // Found a a match
}

boost::iterator_range 还有一个 bool 转换运算符,因此你甚至可以删除 empty() 函数打电话,然后写:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");
if (token_range)
{
    // Found a a match
}

I think you should just test token_range.empty(), like this:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");
if (!token_range.empty())
{
    // Found a a match
}

boost::iterator_range also has a bool conversion operator, so you can even drop the empty() function call, and just write:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");
if (token_range)
{
    // Found a a match
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文