读书人

相关GetAt(),放在心中已久的疑问

发布时间: 2013-12-02 12:00:40 作者: rapoo

有关GetAt(),放在心中已久的疑问
CString m_strResult;

int m n;
m=m_strResult.GetAt(n)-'0';


查看MSDN,GetAt()返回的是个TCHAR类型数据,为嘛减去后面的字符后就能变成整数了呢
[解决办法]
字符实际就是一个编码,本质就是一个数字,不减去'0'也是一个整数,只是进去'0'字符编码就直接转换为对应的数值(一种技巧)
比如'3'-'0'=3
[解决办法]
TCHAR就是char或wchar_t ,这同样是一个数,'c'-'0'就是看‘0’到‘c'的偏移
[解决办法]
如果数字是 0-9 ,可以
如果 是 A-F ,就不对了 (再 -7)
[解决办法]
如果你认真观察ascii码的话,其实字符'0'~'9'的ASCII码就是48到到57,所以,如果一个字符在这个区间,那么减去'0',正好得到的差值就是表示的字符
[解决办法]
ascii字符 “0” = 0x30,“1”= 0x31 ,所以 “1” - “0” = 1

读书人网 >VC/MFC

热点推荐