今天浪费不少时间,就为了检查一个类型为
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查找时注意字符串的比较方式。
最新推荐文章于 2021-12-05 23:03:12 发布