**说起映射,有多重,这里我们简单介绍一对一映射,**就拿ASILL码和字符来说,一个字符对应一个ASILL值,如果我想要获取对应的值,可以通过映射关系获取,当然也可以通过强制转换获取,这里我们主要浅谈映射关系的建立以及使用方法.
因此,我们定义了需要建立映射的两个数据结构,
#define MAX 36
char stdASILL[MAX ]={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,
‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’,‘I’,‘J’,‘,K’,‘L’,
‘M’,‘N’,‘O’,‘P’,‘Q’,‘R’,‘S’,‘T’,‘U’,‘V’,‘W’,‘X’,‘Y’,‘Z’};
int STDASILL[MAX ]={48,49,50,51,52,53,54,55,56,57,
65,66,67,68,69,70,71,72,73,74,75,76,
77,78,79,80,81,82,83,84,85,86,87,88,89,90};
通过这样的定义,我们就把ASILL和数值建立起了一对一的对应关系,那么我们怎么应用,实现输入一个字符立马知道对应的值呢?
这里应用的技术就是map,我们可以定义以下两种对应关系:
字符—>数值:
typedef map<char,int>char2INT;
数字—>字符:
typedef map<int,char>INT2char;
第一种字符对应ASILL的值,第二种就是反过来,数字对应的字符.
接着我们定义两个变量
char2INT mchar2Int;
INT2char mInt2Char;
接下来,我们创建Mapping映射关系.
void IniMapList()
{
for (int i=0;i<MAX ;i++)
{
mchar2Int.insert(make_pair(stdASILL[i],STDASILL[i]));
mInt2Char.insert(make_pair(STDASILL[i],stdASILL[i]));
}
}
接下来我们直接去获取对应的映射关系值:
int GetChar2Int(char nCheckItem)
{
char2INT::iterator it = mchar2Int.find(nCheckItem);
if(it != mchar2Int.end())
{
int ret = it->second;
return it->second;
}
else
return -1;
}
char GetInt2Char(int nCheckItem)
{
INT2char::iterator it = mInt2Char.find(nCheckItem);
if(it != mInt2Char.end())
{
return it->second;
}
else
return -1;
}
//
实测一下:
int r=GetChar2Int(‘3’);
char rr1=GetInt2Char(48);
字符3对应的数字是51,数值48对应的字符是0.
通过这样的方式,我们就可以很轻松的获取字符的值,以及数值对应的字符,是不是非常的简单,容易.其实c++学习也是一个积累的 过程,一个不断成长的过程,之前写的网站居然打不开,现在有时间顺便在这里记录一下,以后也可以看看.