Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将C中的正则表达式代码转换为C++;_C#_C++_C - Fatal编程技术网

C# 如何将C中的正则表达式代码转换为C++;

C# 如何将C中的正则表达式代码转换为C++;,c#,c++,c,C#,C++,C,我用C#编写了这个代码: 。。。我尝试用C++(原生代码,不带.NET程序集)转换它,所以我得到了这样的东西: void main() { string data = "something ... 1,000 anything 20,000 other thing..."; regex pattern("([0-9]+([\\,|\\.][0-9]{1,})*([\\.\\,][0-9]{1,})?)"); const sregex_t

我用C#编写了这个代码:

。。。我尝试用C++(原生代码,不带.NET程序集)转换它,所以我得到了这样的东西:

void main()
    {
        string data = "something ... 1,000 anything 20,000 other thing...";
        regex pattern("([0-9]+([\\,|\\.][0-9]{1,})*([\\.\\,][0-9]{1,})?)");


        const sregex_token_iterator end;

        for (sregex_token_iterator i(data.begin(), data.end(), pattern); i != end; ++i)
        {
            std::cout << i->str() << "-" << i->length() << std::endl;
        }

        cout << endl << "End!";
        fflush(stdin); 
        getchar(); 
    }
void main()
{
string data=“某物…1000任何东西20000其他东西…”;
正则表达式模式(([0-9]+([\\,[124;\\.][0-9]{1,})*([\\\.\,][0-9]{1,}));
const sregex_token_迭代器end;
for(sregx_令牌_迭代器i(data.begin(),data.end(),pattern);i!=end;++i)
{

STD::CUTHEXTROR()P>根据编译器, /Cord>标头可能可用,在这种情况下,您可以使用C++ API简单地重写正则表达式,这应该是微不足道的。

如果不可用,则<代码> <代码>可能是可用的,或者失败了,可以使用TEXBoo.ReX第三方LIB。< /P> < P>根据编译器,<代码>标题可能是可用的,在这种情况下,可以使用C++ API简单地重写正则表达式,这应该是微不足道的。 如果不可用,

可能可用,否则,您可以使用Boost.Regex第三方库。

我这样解决:

struct MatchInfo
{
    string value;
    int index;
    int length;
};

vector<MatchInfo> DoRegex(string data, string pattern)
{
    regex patternRegex(pattern);
    sregex_token_iterator end;
    vector<MatchInfo> result;

    for (sregex_token_iterator i(data.begin(), data.end(), patternRegex); i != end; ++i)
    {
        MatchInfo item;

        item.index = i->first - data.begin();
        item.length = i->length();
        item.value = i->str();

        result.push_back(item);
    }

    return result;
}
struct MatchInfo
{
字符串值;
整数指数;
整数长度;
};
向量DoRegex(字符串数据、字符串模式)
{
正则表达式模式正则表达式(模式);
sregex_令牌_迭代器端;
矢量结果;
对于(sregex_令牌_迭代器i(data.begin(),data.end(),patternRegex);i!=end;+i)
{
匹配信息项;
item.index=i->first-data.begin();
item.length=i->length();
item.value=i->str();
结果:推回(项目);
}
返回结果;
}
我是这样解决的:

struct MatchInfo
{
    string value;
    int index;
    int length;
};

vector<MatchInfo> DoRegex(string data, string pattern)
{
    regex patternRegex(pattern);
    sregex_token_iterator end;
    vector<MatchInfo> result;

    for (sregex_token_iterator i(data.begin(), data.end(), patternRegex); i != end; ++i)
    {
        MatchInfo item;

        item.index = i->first - data.begin();
        item.length = i->length();
        item.value = i->str();

        result.push_back(item);
    }

    return result;
}
struct MatchInfo
{
字符串值;
整数指数;
整数长度;
};
向量DoRegex(字符串数据、字符串模式)
{
正则表达式模式正则表达式(模式);
sregex_令牌_迭代器端;
矢量结果;
对于(sregex_令牌_迭代器i(data.begin(),data.end(),patternRegex);i!=end;+i)
{
匹配信息项;
item.index=i->first-data.begin();
item.length=i->length();
item.value=i->str();
结果:推回(项目);
}
返回结果;
}

我不知道C,但是C++中没有使用正则表达式的标准方法,你需要选择一个库。same@wiso……@ @ WISO BEEP……在C++ 11中有正则表达式:-)你想要纯正则表达式的C++代码,使用C++ 0x正则表达式支持的代码还是使用其他正则表达式库的代码?甚至还有“旧”的代码。boost正则表达式库(在C++11中“导入”)我不知道C,但是C++中没有使用正则表达式的标准方法,你需要选择一个库。same@wiso……@ @ WISO BEEP……在C++ 11中有正则表达式:-)你想要纯正则表达式的C++代码,使用C++ 0x正则表达式支持的代码还是使用其他正则表达式库的代码?甚至还有“旧”的代码。boost regex库(在C++11中是“导入的”)我正在尝试使用它,但是,有了它,我如何才能获得“匹配”集合?你看过你的编译器文档中的头吗?:@Eduardo-更新你的问题,保留C代码,但解释你正在使用tr1/regex,粘贴代码,并解释你的问题是什么(编译错误?结果不好?)以获得最佳答案。我正在尝试使用用户,但是,有了它,我如何才能获得“匹配”集合?您是否查看了编译器的文档以获取标题?:@Eduardo-更新您的问题,保留c#代码,但解释您正在使用tr1/regex,粘贴代码,并解释您的问题所在(编译错误?错误结果?)以获得最佳答案。