gpt4 book ai didi

c++ - 正则表达式 boost 库比较

转载 作者:行者123 更新时间:2023-11-28 08:18:38 25 4
gpt4 key购买 nike

int array[328];
string array2[328];
int array3[328]; //counter array
int value=0;

std::string text("((1 0) (25 5) (27 2) )((25 5) (27 2) (31 2) )");
boost::regex regex("(\\d)+[^\\d+\\)]"); // [^\\d+] ");


boost::sregex_token_iterator iter(text.begin(), text.end(), regex, 0);
boost::sregex_token_iterator end;


for( ; iter != end; ++iter )
{
std::cout<<*iter<<"\n";


for(int b=0; b<328; b++)
{
if(*iter == "1")
{
cout << "yes\n";
array3[b] = array3[b]+ count;
break;
}
}
}

return 0;}

我们正在使用 boost 库制作正则表达式,以查看 1、25、27 和 31 出现了多少次,换句话说,就是括号后的第一个数字。然而,我们正在尝试使用一个包含 1-28 之间数字的数组来比较它,但我们不知道要比较的 iter 类型是否有意义。

最佳答案

您的代码和正则表达式在很多方面都存在严重的错误。但除此之外,您遇到的根本问题是,鉴于您的正则表达式是如何形成的,匹配将导致 string::const_iterator,指向分别是比赛的开始和结束。

将您的代码更改为:

    for(int b=0; b<328; b++)
{
if(*iter == "1 ")
{
cout << "yes\n";
array3[b] = array3[b]+ count;
break;
}
}
}

...它会起作用。

关于c++ - 正则表达式 boost 库比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6738892/

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