字符串转换为整数

一般将字符串转换为整数有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); //输出356
	cout << 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。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章