STL equal_range查找中文字符的有关问题
STL equal_range查找中文字符的问题
问题描述:
一个vector<CString>容器,先用sort排序,然后用equal_range二分查找算法,返回的结果不对。
环境:
Win7,VS2010,Unicode字符集
主要代码:
疑问:为什么equal_range返回的结果不是“在”而是“在不在”?请解惑。感谢!
------解决方案--------------------
结果是正确的啊!请查阅equal_range函数的含义。
------解决方案--------------------
估计sort之后, "在",之后是"在不在"
你需要写一个中文字符的比较算法。
问题描述:
一个vector<CString>容器,先用sort排序,然后用equal_range二分查找算法,返回的结果不对。
环境:
Win7,VS2010,Unicode字符集
主要代码:
#include <vector>
#include <algorithm>
//构造容器
vector<CString> vec;
vec.push_back(_T("在"));
vec.push_back(_T("在乎"));
vec.push_back(_T("在哪"));
vec.push_back(_T("在家"));
vec.push_back(_T("在的"));
vec.push_back(_T("在字"));
vec.push_back(_T("在不在"));
//排序
sort(vec.begin(),vec.end());
//先看看排序结果
vector<CString>::iterator it;
for(it = vec.begin(); it != vec.end(); ++it)
{
//AfxMessageBox(*it); //排序结果有点奇怪
}
//查找“在”
CString str = _T("在");
pair<vector<CString>::iterator, vector<CString>::iterator> cmpResult;
cmpResult = equal_range(vec.begin(), vec.end(), str);
//cmpResult此时的结果为(“在”,“在不在”)
疑问:为什么equal_range返回的结果不是“在”而是“在不在”?请解惑。感谢!
------解决方案--------------------
结果是正确的啊!请查阅equal_range函数的含义。
------解决方案--------------------
估计sort之后, "在",之后是"在不在"
你需要写一个中文字符的比较算法。