map查找时注意字符串的比较方式。
2011-12-15 18:02
288 查看
今天浪费不少时间,就为了检查一个类型为
map<char * ,mystruct> MapA;的错误。
一开始还以为是新建线程无法访问全局变量。后来单步调试,发现比较的时候是带指针比较。
使用map的时候还是带上比较方式吧,否则按默认的要被搞死了。
/* strCtrl.cpp*/
#include <ctype.h>
int strncasecomp(char const *str1, char const *str2, unsigned long len)
{
signed int c1 = 0, c2 = 0;
while (len--)
{
c1 = tolower(*str1++);
c2 = tolower(*str2++);
if (c1 == 0 || c1 != c2)
break;
}
return c1 - c2;
}
#include "strCtrl.h"
#pragma once
using namespace std;
typedef struct cmp_str
{
bool operator()(const char *a, const char *b)
{
//return strcmp(a, b)< 0;
return strncasecomp(a,b,32)<0;
}
};
typedef struct usrInfo
{
char usrId[32];
char usrName[32];
char loginState[1];
//char usrName1[3200];
};
typedef map<char *,usrInfo,cmp_str> usrInfoMap;
头文件声明就不写了。
map<char * ,mystruct> MapA;的错误。
一开始还以为是新建线程无法访问全局变量。后来单步调试,发现比较的时候是带指针比较。
使用map的时候还是带上比较方式吧,否则按默认的要被搞死了。
/* strCtrl.cpp*/
#include <ctype.h>
int strncasecomp(char const *str1, char const *str2, unsigned long len)
{
signed int c1 = 0, c2 = 0;
while (len--)
{
c1 = tolower(*str1++);
c2 = tolower(*str2++);
if (c1 == 0 || c1 != c2)
break;
}
return c1 - c2;
}
#include "strCtrl.h"
#pragma once
using namespace std;
typedef struct cmp_str
{
bool operator()(const char *a, const char *b)
{
//return strcmp(a, b)< 0;
return strncasecomp(a,b,32)<0;
}
};
typedef struct usrInfo
{
char usrId[32];
char usrName[32];
char loginState[1];
//char usrName1[3200];
};
typedef map<char *,usrInfo,cmp_str> usrInfoMap;
头文件声明就不写了。
相关文章推荐
- .net字符串数组查找方式效率比较
- 字符串分割方式和查找方法比较
- 选择某种Map集合保存学号从1到15的学员的学号(键)和姓名(值),学号用字符串表示,输入的时候要以学号乱序的方式存入Map集合,然后按照学号从大到小的顺序将Map集合中的元素输出打印。需要自定义Ma
- Java和JSP中对于比较字符的方式不同,需要注意
- Java 5种字符串拼接方式性能比较。
- NYOJ 685 查找字符串 字典树 map容器 吐血经验 cin cout 与printf scanf
- 在Shell脚本中编写AWK脚本实现数据提取—注意格式、awk中使用shell变量、awk中数字字符串转换成数字、awk中字符串相等比较
- 转 Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 海量字符串中批量查找某些匹配的字符串的方式浅析
- 比较四种方式输出字符串
- Java 5种字符串拼接方式性能比较。
- 黄聪:Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 索引搜索与字符串查找的比较(Lucene学习笔记之一)
- java关于字符串比较的注意事项
- Java 5种字符串拼接方式性能比较
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 字符串比较函数strncasecmp():比较字符串的前n个字符|字符串查找函数strstr和string.find() 查找字符串str1中是否存在与str2一样的子字符串
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)