溫馨提示×

在C++中strtol的返回值怎樣判斷

c++
小樊
145
2024-07-12 13:39:28
欄目: 編程語言

在C++中,strtol函數的返回值是一個長整型(long int)類型的值,表示轉換后的整數值。要判斷strtol函數是否成功轉換字符串為整數,可以通過以下幾種方法:

  1. 如果成功轉換,則strtol函數會返回轉換后的整數值??梢酝ㄟ^比較返回值與0來判斷是否轉換成功。如果返回值為0,則可能是原始字符串是0,也可能是轉換失敗。

  2. 如果轉換失敗,則strtol函數會返回0,并設置errno為ERANGE??梢酝ㄟ^檢查errno是否為ERANGE來判斷轉換是否失敗。

  3. 可以通過檢查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"。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女