gpt4 book ai didi

c++ - clang 中 regex_constants 的错误实现?

转载 作者:可可西里 更新时间:2023-11-01 17:53:04 27 4
gpt4 key购买 nike

standard 中所述:

match_prev_avail: --first 是一个有效的迭代器位置。设置后,会导致 match_not_bol 和 match_not_bow 被忽略

但我运行以下代码并得到:

#include <regex>
#include <iostream>
using namespace std;

int main()
{
regex re0("^bcd");
string str = "abcd";
std::string::iterator start = str.begin() + 1;
cout << regex_search(start, str.end(), re0, regex_constants::match_not_bol) << endl;
cout << regex_search(start, str.end(), re0, regex_constants::match_prev_avail) << endl;
cout << regex_search(start, str.end(), re0, regex_constants::match_prev_avail | regex_constants::match_not_bol) << endl;
}

输出:

0
1
0

match_prev_avail 似乎被 match_not_bol 覆盖了。

最佳答案

您似乎在 clang 中发现了一个错误。 (在此处归档:https://bugs.llvm.org/,因为它似乎尚未报告)

我检查了 MSVC 1914,它给出了

0
0
0

与 GCC 4.9.2 相同(使用 cpp.sh 检查)

我重新检查了标准 (N4810) 的 .pdf 格式,这在 30.5.2 中与 cppreference 匹配州。

match_prev_avail: --first is a valid iterator position. When this flag is set the flags match_not_bol and match_not_bow shall be ignored by the regular expression algorithms (30.11) and iterators (30.12)

关于c++ - clang 中 regex_constants 的错误实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56505648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com