聯繫:
1、都在cstring頭文件裏
2、功能都是把一個字符串轉換爲int
3、當字符串中有除了數字外的字符時,只會將這些字符前的數字轉換爲int
int main()
{
int a = atoi("+1234!!@12313131313113a12");//本例中stoi的輸出結果一樣
cout << a;
}
輸出結果爲
區別:
1、函數參數不同:stoi的參數是const string*,atoi的參數是const char*。可以直接將char作爲stoi函數的參數,因爲string類存在相應的構造函數。但不能將string作爲atoi函數的參數,如果一定要用,先將string轉化爲char(利用string類內的data方法或者c_str方法或者copy方法)。
string和char*的轉換可以參考我的博文https://blog.csdn.net/jojozym/article/details/104792257
2、範圍檢測不同:stoi有範圍檢測,超過則報錯;atoi沒有範圍檢測,超過則返回上界或者下界。
3、違法輸入處理不同:stoi會直接報錯,atoi會返回0(此處的違法指的是字符串從頭部開始不存在一個可轉換的整數序列,比如下面的幾個例子)。
使用stoi:
使用atoi: