map查找时注意字符串的比较方式。

今天浪费不少时间,就为了检查一个类型为
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;
头文件声明就不写了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值