htmlcxx解析中文时出现断言_ASSERTE((unsigned)(c + 1) <= 256)的解决方法
来源:互联网 发布:java定义错误枚举类 编辑:程序博客网 时间:2024/04/30 05:17
htmlcxx是一款很不错的解析html和css的开源库, 但是在解析存在中文的网页时却出现断言_ASSERTE((unsigned)(c + 1) <= 256), 比较烦人, 该问题是由于isspace函数判断非ascii字符是会出现该断言, isspace要求传入的参数必须是小于256的ascii, 而中文的ascii值是大于256的, 针对这一问题, 有两种解决方案.
方案1. 设置编译选项.
右键htmlcxx工程-->属性-->配置属性-->c/c++-->语言-->默认char为无符号选择(是/J).
重新编译该库, 使用时就不会报断言.
方案2. 修改源代码.
打开Node.cc文件,定位到第72,74,81行代码,修改如下:
//72行、//while (isspace(*begin) && begin < end) ++begin;while ((!((unsigned)*begin > 255) && isspace(*begin)) && begin < end) ++begin;//74行、//while (isspace(*trimmed_end) && trimmed_end >= begin) --trimmed_end;while ((!((unsigned)*trimmed_end > 255) && isspace(*trimmed_end)) && trimmed_end >= begin) --trimmed_end;//81行.//while (*end && ! isspace(*end) && *end != '>') end++;while (*end &&((unsigned)*end > 255 || !isspace(*end) ) && *end != '>') end++;
然后, 找到第28行,修改如下:
while (!isspace(*ptr)) { if(*ptr == '>') return; ++ptr; }
再然后定位到PaserSax.tcc文件, 找到SkiphtmlComment函数, 修改如下:
template <typename _Iterator> _Iterator htmlcxx::HTML::ParserSax::skipHtmlComment(_Iterator c, _Iterator end) { while ( c != end ) { if (*c++ == '-' && c != end && *c == '-') { _Iterator d(c); while (++c != end &&((unsigned)*c > 255 || !isspace(*c) ) && *c != '>'); if (c == end || *c++ == '>') break; c = d; } } return c; }
搞定收工.
0 0
- htmlcxx解析中文时出现断言_ASSERTE((unsigned)(c + 1) <= 256)的解决方法
- htmlcxx 0.85的bug,断言_ASSERTE((unsigned)(c + 1) <= 256)错误
- _ASSERTE((unsigned)(c + 1) <= 256);
- 56 Expression: (unsigned)(c + 1) <= 256
- htmlcxx 解析 html 用法
- HtmlCXX 解析html
- BOOL CWnd::DestroyWindow()中出现ASSERT(m_hWnd == hWndOrig)断言的原因及解决方法
- BOOL CWnd::DestroyWindow()中出现ASSERT(m_hWnd == hWndOrig)断言的原因及解决方法
- 解决VS中出现_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse))的问题
- libtidy,htmlcxx-优秀的html解析库介绍
- libtidy,htmlcxx-优秀的html解析库介绍
- 关于HtmlCxx对,C++ 解析,编辑,重新生成HTML的
- CSplitterWnd CreateView时出现的断言错误!
- 使用微信SDK时,出现了 "operator new[](unsigned long)", referenced from:等问题的解决方法
- htmlcxx
- 解决 debug模式下 的 56 Expression: (unsigned)(c + 1) <= 256
- FCKeditor 2.3中文文件上传时出现乱码的解决方法
- Ubuntu浏览FLASH时出现中文乱码的解决方法
- 关于 contentWindow, contentDocument
- hdu 2020
- MYSQL 记录总结 更新中
- 关于jmeter的入门
- C++11 追踪返回类型
- htmlcxx解析中文时出现断言_ASSERTE((unsigned)(c + 1) <= 256)的解决方法
- ios7 国际化
- hdu——1284——钱币兑换问题
- 哈希--查找出现过的数字
- spring_secrity
- 改造CAS单点登录 --- 自定义登陆页面(客户端)
- android layout属性介绍
- IBM调整渠道规划欲推动云业务增长
- NYOJ 153 king VS king