【发布时间】:2011-11-07 15:24:55
【问题描述】:
有没有一种简单的方法来解析std::string 以搜索某些字符的列表?例如,假设用户输入this<\is a.>te!st string。我希望能够发现那些非字母字符并对此做一些事情。我正在寻找一种通用解决方案,它允许我简单地指定chars 的列表,以便我可以在不同情况下重用该函数。我猜正则表达式将在任何解决方案中发挥关键作用,显然越紧凑和高效越好。
【问题讨论】:
有没有一种简单的方法来解析std::string 以搜索某些字符的列表?例如,假设用户输入this<\is a.>te!st string。我希望能够发现那些非字母字符并对此做一些事情。我正在寻找一种通用解决方案,它允许我简单地指定chars 的列表,以便我可以在不同情况下重用该函数。我猜正则表达式将在任何解决方案中发挥关键作用,显然越紧凑和高效越好。
【问题讨论】:
您可以为此使用std::string::find_first_not_of()。它会找到除了你给它的集合中的字符之外的字符。其对应的find_first_of() 将搜索集合中 的字符。
这两个函数都允许您指定起始索引。这将使您能够从中断处继续搜索。
【讨论】:
使用像boost::regex 这样的正则表达式库怎么样?
This 应该完全符合您的要求。
如果你的编译器支持 C++11,你可以使用 std::regex。
【讨论】:
Regex 似乎有点矫枉过正。您可以使用std::string 的方法:find_first_of() 和/或find_last_of()。 Here 你可以找到文档和示例。
【讨论】: