很久没写这个系列了,干脆换个名字叫“N天一个系列”(0 < N < 365)。现在来讨论下Data Conversion下的一些重要函数吧。
函数 | 作用 |
atof | 把字符串转换为float型数字 |
atoi | 把字符串转换为int型数字 |
atol | 把字符串转换为long型数字 |
__toascii | 把字符转换为ascii码 |
tolower | 把字符转换为小写字符 |
toupper | 把字符转换为大写字符 |
abs | 取绝对值 |
strtod | |
strtol |
1.atof
其实,这种字符串转换的函数,都无非做的同一件事情--解析字符串,根据不同的解析规则,执行不同的转换方式。
atof是借助strtod来实现的,主要步骤为:
- 1).解析空格 isspace
- 2).解析正负号 ‘+’or ‘-’
- 3).解析整数部分数字 isdigit
- 4).解析小数点及其后小数部分
- 5).解析科学计数部分
- 6).解析科学计数的正负号
- 7).还原组合数字
2.实现
1: inline double tAtof(const tChar *pStr)
2: {
3: return tStrtod(pStr, NULL);
4: }
5:
6: inline double tStrtod(const tChar *pStr, tChar **pEndStr)
7: {
8: // advance beyond any leading whitespace
9: while( ::isspace(*pStr) )
10: ++pStr;
11:
12: // check for optional '+' or '-'
13: unsigned short uNegative = 0;
14: if( *pStr == _T('-') )
15: {
16: uNegative = 1;
17: ++pStr;
18: }
19: e