[wxWidgets]_[初级]_[反转wxString字符串]
2014-05-06 23:29
337 查看
场景:
1. string的反转可以用
函数,wxString其实也可以,但是可能实现的iterator有bug,对宽字节实现的不够好,wxString内部用unicode存储.所以显示的字符是错的。
可以把wxString转换为wstring再调用reverse,这样还支持宽字节字符串.
代码:
测试wxWidgets 3.0.0 直接反转wxString代码:
输出:
wxWidgets上提的bug: http://trac.wxwidgets.org/ticket/16234
wxWidgets的最新修复,重载swap模版函数替换Generic的实现:
参考:http://www.cplusplus.com/reference/algorithm/swap/
1. string的反转可以用
#include <algorithm> void reverse( iterator start, iterator end );
函数,wxString其实也可以,但是可能实现的iterator有bug,对宽字节实现的不够好,wxString内部用unicode存储.所以显示的字符是错的。
可以把wxString转换为wstring再调用reverse,这样还支持宽字节字符串.
代码:
#include <algorithm> wxString str(L"abcde中文fg"); std::wstring str2 = str.ToStdWstring(); std::reverse(str2.begin(),str2.end()); str = wxString(str2);
测试wxWidgets 3.0.0 直接反转wxString代码:
wxString str(L"abcde中文fg"); std::cout << "str4: " << str << std::endl; std::wstring str2 = str.ToStdWstring(); std::reverse(str2.begin(),str2.end()); std::reverse(str.begin(),str.end()); std::cout << "str3: " << str << std::endl; std::cout << "str2: " << str2 << std::endl; str = wxString(str2); std::cout << "str1: " << str << std::endl;
输出:
str4: abcde中文fg str3: gf文中e中文fg str2: gf文中edcba str1: gf文中edcba
wxWidgets上提的bug: http://trac.wxwidgets.org/ticket/16234
wxWidgets的最新修复,重载swap模版函数替换Generic的实现:
namespace std { template <> void swap<wxUniCharRef>(wxUniCharRef& lhs, wxUniCharRef& rhs) { if (&lhs != &rhs) { wxUniChar tmp = lhs; lhs = rhs; rhs = tmp; } } }
参考:http://www.cplusplus.com/reference/algorithm/swap/
Many components of the standard library (within std) call swap in an unqualified manner to allow custom overloads for non-fundamental types to be called instead of this generic version: Custom overloads of swap declared in the same namespace as the type for which they are provided get selected through argument-dependent lookup over this generic version.
相关文章推荐
- [wxWidgets]_[初级]_[反转wxString字符串]
- [wxWidgets]_[初级]_[发送异步事件的注意项之字符串深浅复制]
- [wxWidgets]_[初级]_[发送异步事件的注意项之字符串深浅复制]
- 华为OJ 初级:字符串反转
- 【Python初级】由判定回文数想到的,关于深浅复制,以及字符串反转的问题
- 华为oj初级 字符串反转
- 字符串反转
- javaScript算法--字符串反转
- 反转字符串的2中输出
- 反转字符串(c语言)
- 编写反转字符串的程序,要求优化速度、优化空间。
- 反转字符串递归与非递归方式
- 字符串反转(java实现)
- 字符串的反转
- 字符串反转
- Java算法之字符串反转分析
- 软件开发者面试百问-----怎样把字符串反转?你能不用临时的字符串么?
- Python 实现字符串反转的四种方法
- C# 字符串反转,数据排序
- 字符串反转 "you are beautiful" 转为 "beautiful are you"