C++ atoi和stoi的區別和聯繫

聯繫:
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:
在這裏插入圖片描述
在這裏插入圖片描述

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