我用的是微软的GRETA正则表达式模板类库,我有一段代码请高手帮我看一下.我有几个类型不会转换.
match_results results1; string str1("many,mamy,maxy");
rpattern pat1("ma"/*, GLOBAL | ALLBACKREFS*/);
cout << "group count:\t" << pat1.cgroups() << endl << endl;
match_results::backref_type bra = pat1.match(str1, results1);
if (bra.matched)
{
cout << "match count:\t" << results1.cbackrefs() << endl;
for (int i=0; i < results1.cbackrefs();i ++)
cout << "price: " << results1.backref(i) << endl;
cout << bra << endl;
}
1,请问我怎样把match_results::backref_type bra 里的bra所指的里面的值转为CString
2,请问怎样把results1.backref(i)这个值也转为CString.
谢谢了.
match_results results1; string str1("many,mamy,maxy");
rpattern pat1("ma"/*, GLOBAL | ALLBACKREFS*/);
cout << "group count:\t" << pat1.cgroups() << endl << endl;
match_results::backref_type bra = pat1.match(str1, results1);
if (bra.matched)
{
cout << "match count:\t" << results1.cbackrefs() << endl;
for (int i=0; i < results1.cbackrefs();i ++)
cout << "price: " << results1.backref(i) << endl;
cout << bra << endl;
}
1,请问我怎样把match_results::backref_type bra 里的bra所指的里面的值转为CString
2,请问怎样把results1.backref(i)这个值也转为CString.
谢谢了.
ss<< results1.backref(i);
CString tmp = ss.str().c_str();ss.str("");
ss<<bra;
CString tmp2 = ss.str().c_str();
请问一下
#include <sstream>std::stringstream ss;
ss<< results1.backref(i);
CString tmp = ss.str().c_str();
ss<< results1.backref(i);
"<<"这个符号是何物?如何用?
再一次谢谢了
不过我已经完成了.
是这样完成了:
results1.backref(i).str().c_str()
我没有用std::stringstream ss;请问行不行.我哪样做有没有不妥?
再问一个问题就结贴.
match_results::backref_type bra = pat1.match(str1, results1);
这句话里,match好像只能接受三种类型的参数:sta::string,const char*, const_iterator
但是std::string & const char* 都是单字节的.我的工程里不仅要处现单字节而且还要处理双字节的,因为还要用到简体中文和繁体中文,用的全都是std::wstring,
请问该怎么办?
我用了一个WideCharToMultiByte,不过还是不行??????????
match_results<TCAR> ? 可能是这种形式,我只用过boost regex library,没有用过GRETA
http://www.fruitfruit.com/vc/boost/boost_regex_test.cpp
这位大哥,你说的自己写一个转换函数,实在是有点难度,我自己还没有那个水平.
能不能说得再清楚一点,谢谢了.