字符串中数字与整型数字的转化
Posted Adalight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串中数字与整型数字的转化相关的知识,希望对你有一定的参考价值。
ASCLL码
整数0的ASCLL码为48;
A-Z:65-90;
a-z:97-122;
前言
遇到这样的一道语法题
类似的,表达式的求值,例如:1+2 。如果用整型数组储存,那么字符就不会显示;如果用字符数组储存,那么‘1’和1又不相等。到底怎么合理的转化而又不增加繁琐的判断呢?
看到这样的一段代码
//代码片段
c -= \'0\'; //将字符转化成对应数值
到底是怎么回事,仔细想了想,也就明白了。
转换
其实在字符中的‘1’~‘9’其对应的ASCII码值并不是1- 9,而是:
可以发现,‘1’ - ‘0’ 对应的ASCII码值为1;
‘2’ - ‘0’ 对应的ASCII码值为2 ;…以此类推,字符串中的数字可以近似表示为‘x’ - ‘0’ = x (其中x为0 ~ 9 中的一个)。
代码实现
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int ch;
long long num = 0;
long long temp;
int is_overflow = 0;
const int max_int = pow(2, sizeof(int) * 8) / 2 - 1;
const int min_int = pow(2, sizeof(int) * 8) / 2 * (-1);
cout << "请输入等待转换的字符串:";
do
{
ch = getchar();
if (ch >= \'0\'&&ch <= \'9\')
{
temp = 10 * num + (ch - \'0\');
if (temp > max_int || temp < min_int)
{
is_overflow = 1;
break;
}
else
{
num = temp;
}
}
else
{
if (num)
{
break;
}
}
}
while (ch != \'\\n\');
if (is_overflow)
{
cout << "数值超出范围,结果未定义" << endl;
}
else
{
if (!num)
{
cout << "并未找到任何数值" << endl;
}
else
{
cout << "结果是" << num << endl;
}
}
system("pause");
return 0;
}
以上是关于字符串中数字与整型数字的转化的主要内容,如果未能解决你的问题,请参考以下文章