您的位置:首页 > 其它

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;

头文件声明就不写了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct c
相关文章推荐