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