1 功能
atoi()函數(shù)將數(shù)字格式的字符串轉(zhuǎn)換為整數(shù)類型。例如,將字符串“12345”轉(zhuǎn)換成數(shù)字12345。
2 格式
該函數(shù)的格式為
int atoi(const char* str)
其中,參數(shù)str是要轉(zhuǎn)換的字符串,返回值是轉(zhuǎn)換后的整數(shù)。
3 注意事項(xiàng)
3.1 關(guān)于參數(shù)的注意事項(xiàng)
在“2 格式”中提到,atoi()函數(shù)的參數(shù)是要轉(zhuǎn)換的字符串。該字符串的格式為
[空格][符號(hào)][數(shù)字]
其中,空格可以是鍵盤中的空格字符或者是Tab字符;符號(hào)可以是表示正數(shù)的“+”,也可以是表示負(fù)數(shù)的“-”;數(shù)字即為數(shù)字字符串。所以,atoi()函數(shù)參數(shù)可以是
“ +123”
“ -456”
需要注意的是,空格和“+”可以省略。所以,atoi()函數(shù)參數(shù)還可以是
“123”
“-456”
3.2 關(guān)于返回值的注意事項(xiàng)
如果atoi()函數(shù)轉(zhuǎn)換成功,則該函數(shù)的返回值是轉(zhuǎn)換后的整型。如果atoi()函數(shù)轉(zhuǎn)換失敗,例如要轉(zhuǎn)換的類型超過了int表示的范圍,如果要轉(zhuǎn)換的是正數(shù),則返回INT_MAX(2147483647),如果要轉(zhuǎn)換的是負(fù)數(shù),則返回INT_MIN(-2147483648)。代碼如下所示
str1 = " 3336402735171707160320";
value1 = atoi(str1);
if (INT_MAX == value1)
{
printf("要轉(zhuǎn)換的值超出了int的上邊界。\n");
}
str2 = " -3336402735171707160320";
value2 = atoi(str2);
if (INT_MIN == value2)
{
printf("要轉(zhuǎn)換的值超出了int的下邊界。\n");
}
需要注意的是,atoi()函數(shù)在stdlib.h中定義,所以在使用atoi()函數(shù)時(shí),需要包含該頭文件。
atoi()函數(shù)當(dāng)讀取到參數(shù)中的'\0'字符時(shí),停止讀取并返回。
3.3 判斷轉(zhuǎn)換是否成功
雖然atoi()函數(shù)的參數(shù)和返回值中不包含轉(zhuǎn)換是否成功的標(biāo)志,但是可以通過系統(tǒng)變量errno的值來判斷轉(zhuǎn)換是否成功。
相關(guān)鏈接:
系統(tǒng)變量errno:errno 是記錄系統(tǒng)的最后一次錯(cuò)誤代碼。代碼是一個(gè)int型的值,在errno.h中定義。查看錯(cuò)誤代碼errno是調(diào)試程序的一個(gè)重要方法。
在調(diào)用atoi()函數(shù)時(shí),如果轉(zhuǎn)換成功,則errno的值是0;如果遇到“3.2 關(guān)于返回值的注意事項(xiàng)”中提到的超出范圍錯(cuò)誤時(shí),errno的值將會(huì)被設(shè)置為ERANGE。
if (errno == ERANGE)
{
printf("要轉(zhuǎn)換的數(shù)字超出int范圍.\n");
}
4 寬字符的轉(zhuǎn)換
atoi()函數(shù)的寬字符串版本是_wtoi()函數(shù)。該函數(shù)的格式為
int _wtoi(const wchar_t* str);
其參數(shù)與返回值的含義與atoi()函數(shù)相似。
到此這篇關(guān)于C++ atoi()函數(shù)用法案例詳解的文章就介紹到這了,更多相關(guān)C++ atoi()函數(shù)用法內(nèi)容請(qǐng)搜索html5模板網(wǎng)以前的文章希望大家以后多多支持html5模板網(wǎng)!