今天,我在应用程序中遇到了奇怪的错误。我已经测试了2个小时,但没有找到解决方案。也许您可以帮助我解决这个问题。所以这里是:
#include <iostream> #include <regex> #include <vector> int main() { std::regex reg("rmvb|avi|rm|mp4|256"); std::vector<std::string> ext{"rmvb", "avi", "rm", "mp4", "256", "null"}; for (int i = 0; i < 6; i++) { std::cout << ext[i] << "\t" << std::boolalpha << std::regex_match(ext[i], reg) << std::endl; } return 0; }
输出:
rmvb true avi true rm false mp4 false 256 false null false
似乎该模式在第二个元素之后被丢弃了-不管我选择什么顺序(我试图交换它们,因为我认为数字会导致此错误-但事实并非如此)。现在我不知道发生了什么。
我正在使用gcc版本4.6.3(Debian 4.6.3-1)。
正则表达式库大多数尚未在libstc++中实现(请参见状态页)。这可能是错误,也可能是未实现的结果。我建议使用Boost.Regex作为替代。