字符串轉化為整數可能是實際編程中最常用到的方法了,因為因為string很容易通過下標對每一位的數字進行操作,但是卻沒辦法實現int的加減乘除等,所以在實際編程中經常需要先用string 存下數據,操作完后再轉化為int類型
有兩種比較實用的方法可以實現
方法一:自己寫一個函數來實現
class Solution { public: int StrToInt(string str) { int length=str.length();//先計算字符串的長度 if(length==0) { return 0; } int result=0; int flag=1; int i=0; if(str[i]=='-')//只能是在數據的首位輸入符號,所以只需要一次判斷即可 { flag=-1; i++; } if(str[i]=='+') { flag=1; i++; } while(str[i]!='\0') { if(str[i]==' ')//刪掉數字前面的空格,因為不知道前面輸入了多少個空格所以需要在while循環中 { i++; } if(str[i]>='0'&&str[i]<='9') { result=(result*10+flag*(str[i]-'0')); i++; } else { return 0; } } return result; } };
方法二:調用庫函數atio
#include<iostream> #include<string> #include<stdlib.h> using namespace std; int main() { string str; cin>>str; int result=0; result=atoi(str.c_str()); cout<<result<<endl; return 0; }
stio函數的頭文件是#include<stdlib.h>
string 是C++ STL定義的類型,atoi是 C 語言的庫函數,所以要先轉換成 char* 類型才可以用 atoi。
atoi函數原型
int atoi(const char *nptr);
c_str是Borland封裝的String類中的一個函數,它返回當前字符串的首字符地址。