【高分求助】使用Reg_search提取中文字符串出现乱码的问题

comefirst 2008-08-23 12:49:09
我想在一个网页中根据正则表达式提取特定的字符串,但是出现了很奇怪的问题。主要代码如下
Title="清心寡欲最新章节信息";
AnsiString regstr="([\\u4e00-\\u9fa5,\\w]*)节";
boost::regex _reg(regstr.c_str());
boost::smatch what;
string inStr=Title.c_str(); //这里将AnsiString 转化为标准的string
std::string::const_iterator _start = inStr.begin();
std::string::const_iterator _end = inStr.end();
boost::regex_search(_start, _end, what, _reg);
std::string msg1(what[1].first, what[1].second);
Memo1->Lines->Add(msg1.c_str());
以上代码中AnsiString regstr="([\\u4e00-\\u9fa5,\\w]*)节"; 如果改为AnsiString regstr="([\\u4e00-\\u9fa5,\\w]*)信",也就是提取的位置变化的时候,最后输出的结果就会莫名其妙地产生乱码,大家有么有遇到过类似的问题,已经搞了好几个小时了,还没有搞定。
谢谢参与
...全文
278 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
comefirst 2008-08-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 flymoon99 的回复:]
Title="清心寡欲最新章节信息";
AnsiString regstr="([\\u4e00-\\u9fa5,\\w]*)节";
boost::wregex _reg(regstr.c_str());
boost::wsmatch what;
wstring inStr=Title.c_str(); //这里将AnsiString 转化为标准的string
std::string::const_iterator _start = inStr.begin();
std::string::const_iterator _end = inStr.end();
boost::regex_search(…
[/Quote]
我加了只有编译无法通过,提示没有此函数
comefirst 2008-08-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xabcxyz 的回复:]
读写网页内容,要使用UT8/UT16编码,使用GB不行地
[/Quote]
怎么会不行?给个理由?我已经吧UTF-8转换成GB2312编码了,使用UTFDecode函数就可以了。
comefirst 2008-08-27
  • 打赏
  • 举报
回复
刚刚查了资料,说使用wregx 处理unicode必须在编译Boost的时候另外指定的。
哪位朋友知道怎么指定,告诉我一声啊,救命。
flymoon99 2008-08-24
  • 打赏
  • 举报
回复
Title="清心寡欲最新章节信息";
AnsiString regstr="([\\u4e00-\\u9fa5,\\w]*)节";
boost::wregex _reg(regstr.c_str());
boost::wsmatch what;
wstring inStr=Title.c_str(); //这里将AnsiString 转化为标准的string
std::string::const_iterator _start = inStr.begin();
std::string::const_iterator _end = inStr.end();
boost::regex_search(_start, _end, what, _reg);
std::string msg1(what[1].first, what[1].second);
Memo1->Lines->Add(msg1.c_str());
flymoon99 2008-08-24
  • 打赏
  • 举报
回复
BOOST库有unicode的版本,前面加个W就行了

Title="清心寡欲最新章节信息";
AnsiString regstr="([\\u4e00-\\u9fa5,\\w]*)节";
boost::wregex _reg(regstr.c_str());
boost::wsmatch what;
wstring inStr=Title.c_str(); //这里将AnsiString 转化为标准的string
std::string::const_iterator _start = inStr.begin();
std::string::const_iterator _end = inStr.end();
boost::regex_search(_start, _end, what, _reg);
std::string msg1(what[1].first, what[1].second);
Memo1->Lines->Add(msg1.c_str());
xabcxyz 2008-08-23
  • 打赏
  • 举报
回复
读写网页内容,要使用UT8/UT16编码,使用GB不行地
jacknes009 2008-08-23
  • 打赏
  • 举报
回复
没有看懂你的代码。。。你的是不是一个字符串在另一个字符串里查找呢?
comefirst 2008-08-23
  • 打赏
  • 举报
回复
自己支持一下
源码下载地址: https://pan.quark.cn/s/40677b766bda "ContextCapture 倾斜摄影快速、创新及全面空三建模与单机集群硬件部署方案2018" 此资源聚焦于倾斜摄影(ContextCapture)空三建模及单机集群硬件部署方案,致力于为用户呈现最快、最优成本效益的台式工作站、移动工作站、并行集群的多样化部署选择。以下是该资源的详细知识点概述: 一、相关设备型号说明 * UltraLAB 是西安坤隆计算机科技有限公司推出的专属图形工作站品牌,具备三大卓越优势:顶尖的计算硬件架构、精准的行业应用定制服务、专业的硬件系统优化工艺。 二、硬件部署方案 * 台式工作站部署建议:设备特色在于当前市场上最快的台式计算架构,适用于办公场景下,部门层级常规的倾斜摄影空三处理、三维建模。 * 便携式工作站部署建议:设备特色在于当前市场上最快的移动计算架构,适用于移动倾斜摄影的空三处理、三维建模工作站。 * 大数据量处理工作站推荐:设备特色在于极限自动超频加速与16个并行存储构造,具备空三处理和三维建模最强的计算性能及海量高速并行存储性能。 * 多设备并行计算集群部署建议:针对海量图像数据计算产生的巨大需求,单机计算能力处理时间过长,效率不高,通过多台机器并行集群,进行空三处理、三维建模,显著减少处理时间。 三、部署方案深入解析 * 2.1 倾斜摄影建模(台式工作站)部署方案:设备特色在于最高的计算处理能力~6核5.2GHz,内存最大配置可达64GB,配备最新图灵架构的RTX显卡,相比市场其他品牌机器(单CPU、双Xeon处理器)更快、更具成本效益。 * 2.2 倾斜摄影建模(移动便携式工作站)硬件部署方案:设备特色在于最高的计算处理能力~6...

13,872

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧