字符串轉換爲整數

一般將字符串轉換爲整數有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。



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