函式
<cstdlib>

strtoul

unsigned long int strtoul (const char* str, char** endptr, int base);
將字串轉換為無符號長整型
解析 C 字串 str,將其內容解釋為指定 base 的整數,並以 unsigned long int 型別的值返回。

此函式的操作類似於 strtol 來解釋字串,但會生成 unsigned long int 型別的數字(有關解釋過程的詳細資訊,請參見 strtol)。

引數

str
包含整數表示的 C 字串。
endptr
char* 型別物件的引用,其值由函式設定為 str 中數值之後的下一個字元。
此引數也可以是空指標,此時它將不被使用。
base
決定有效字元及其解釋的數字基數(radix)。
如果為 0,則使用的基數由序列中的格式決定(有關詳細資訊,請參見 strtol)。

返回值

成功時,函式返回轉換後的整數,作為 unsigned long int 值。
如果無法執行有效的轉換,則返回零值。
如果讀取的值超出了 unsigned long int 可表示的值的範圍,函式將返回 ULONG_MAX(在 <climits> 中定義),並將 errno 設定為 ERANGE

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* strtoul example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* strtoul */

int main ()
{
  char buffer [256];
  unsigned long ul;
  printf ("Enter an unsigned number: ");
  fgets (buffer, 256, stdin);
  ul = strtoul (buffer, NULL, 0);
  printf ("Value entered: %lu. Its double: %lu\n",ul,ul*2);
  return 0;
}

可能的輸出

Enter an unsigned number: 30003
Value entered: 30003. Its double: 60006


有關 endptr 引數實際應用的示例,請參見 strtol

資料競爭

str 指向的陣列被訪問,endptr 指向的指標被修改(如果非空)。

異常 (C++)

無異常保證:此函式從不丟擲異常。

如果 str 沒有指向一個有效的 C 字串,或者 endptr 沒有指向一個有效的指標物件,將導致未定義行為

另見