字符串转换为整数

来源:互联网 发布:美白水知乎 编辑:程序博客网 时间:2024/05/22 06:17

一般将字符串转换为整数有2种方式,一种是用std的库函数,一种就是一步一个脚印来实现了。

1、用库函数实现

<span style="font-family:Comic Sans MS;">#include <iostream>#include <string.h>#include <iomanip> using namespace std;int main(void){char a[]="-100"; char b[]="456"; int c; c = atoi(a)+atoi(b); //输出356cout << dec << c << endl; return 0; }</span>
注意了,atoi是将字符串转换为整数,也有很多库函数将字符串转换为浮点数,长整形数等,自己可在IDE里调用并查看。同理,整数转化为字符串也有相应的库函数itoa等,原来什么事情都有两面性啊!
这里调试程序的时候发现了一个小问题,即warning:no newline at end of file,很多人不去注意这个警告,其实解决这个问题很简单,在程序的末尾再输一下enter就可以了。原因就是编译器的设计,别人是这么设计的,我们就只管遵循即可。

2、不用库函数实现

<span style="font-family:Comic Sans MS;">#include <iostream>using namespace std;//不使用库函数将字符串转换为数字int str2int(const char *str){int num=0,dig=1;if (str==NULL){return -1;}while (*str==' '){ //滤掉开头的空格str++;}if (*str=='+'){str++;}if (*str=='-')//如果开头有"-"使dig=-1{str++;dig*=-1;}while (*str!='\0'){num=num*10+((*str++)- '0');if (*str<'0'||*str>'9')//如果遇到非数字则跳出循环{break;}}num*=dig;return num;}int main(void){int num=0;char str[10];cin >> str; num=str2int(str);cout<<num<<"\n";return 0;}</span>
其实,以上str++和++str已经没有分别了,因为str的值是一样的就可以了,不在乎表达式的结果。在这里str++的表达式和++str的表达式的结果是不同的,相差1。



0 0