在C++中,strtol函數的返回值是一個長整型(long int)類型的值,表示轉換后的整數值。要判斷strtol函數是否成功轉換字符串為整數,可以通過以下幾種方法:
如果成功轉換,則strtol函數會返回轉換后的整數值。可以通過比較返回值與0來判斷是否轉換成功。如果返回值為0,則可能是原始字符串是0,也可能是轉換失敗。
如果轉換失敗,則strtol函數會返回0,并設置errno為ERANGE。可以通過檢查errno是否為ERANGE來判斷轉換是否失敗。
可以通過檢查strtol函數的第二個參數(char** endptr)指向的字符是否為NULL來判斷是否成功轉換。如果endptr不為NULL,并且指向的字符不是空字符,則表示轉換失敗。
示例代碼如下:
#include <iostream>
#include <cstdlib>
#include <cerrno>
int main() {
const char* str = "12345";
char* endptr;
long int num = strtol(str, &endptr, 10);
if (num == 0 && (errno == ERANGE || endptr == str)) {
std::cout << "Conversion failed" << std::endl;
} else {
std::cout << "Converted number: " << num << std::endl;
}
return 0;
}
以上代碼中,如果轉換成功,則輸出轉換后的整數值;如果轉換失敗,則輸出"Conversion failed"。