將字串轉換成 long 整數值。
語法
long strtol(
const char *string,
char **end_ptr,
int base
);
long wcstol(
const wchar_t *string,
wchar_t **end_ptr,
int base
);
long _strtol_l(
const char *string,
char **end_ptr,
int base,
_locale_t locale
);
long _wcstol_l(
const wchar_t *string,
wchar_t **end_ptr,
int base,
_locale_t locale
);
參數
string
以 Null 終止的待轉換字串。
end_ptr
輸出參數,設定為指向最後一個解譯字元之後的字元。 忽略 ,如果 NULL為 。
base
要使用的數字基底。
locale
要使用的地區設定。
傳回值
strtol、 wcstol、 _strtol_l和 _wcstol_l 會傳回 中 string表示的值。 如果沒有可能的轉換,它們會傳回 0。 當表示法造成溢位時,它們會傳回 LONG_MAX 或 LONG_MIN。
errno 如果發生溢位或下溢,則會設定為 ERANGE 。 如果 為 ,則會將其設定為 EINVALstring。NULL 或者,如果 base 為非零且小於 2,或大於 36。 如需、 和其他傳回碼的詳細資訊ERANGE,請參閱EINVAL、 errno_doserrno和 _sys_errlist。 _sys_nerr
備註
、、 函式會轉換成 strtolwcstol_strtol_l_wcstol_lstringlong 它們會停止在第一個字元讀取 string ,但無法辨識為數位的一部分。 它可以是終止 Null 字元,或大於或等於 base的第一個英數位元。
wcstol 和 _wcstol_l 是寬字元版本的 strtol 和 _strtol_l。 其 string 自變數是寬字元字串。 這些函式的行為與 strtol 和 _strtol_l 相同,否則為 。 地區設定的LC_NUMERIC類別設定會決定 中辨識基數位元(小數標記或小數點)。string 函式 strtol 並使用 wcstol 目前的地區設定。
_strtol_l 和 _wcstol_l 會改用傳入的地區設定。 如需詳細資訊,請參閱 setlocale 和 地區設定。
當 為 end_ptr時NULL,會忽略它。 否則,停止掃描的字元指標會儲存在所 end_ptr指向的位置。 如果找不到有效的數位,或指定了無效的基底,則無法轉換。
string的值接著會儲存在 所end_ptr指向的位置。
strtol 需要 string 指向格式如下的字串︰
[] [
whitespace{+|-}] [0[{x|X}]] [alphanumerics]
方括弧 ([ ]) 括住選擇性元素。 大括弧和垂直橫條 ({ | }) 圍繞單一元素的替代專案。
whitespace 可能包含空格和製表符,這些字元會被忽略。
alphanumerics 是十進位數或字母 'a' 到 'z' (或 'A' 到 'Z')。 不符合此表單的第一個字元會停止掃描。 如果 base 介於 2 到 36 之間,則會將其作為數位的基底。 如果 base 為 0,則會使用 所 string 指向字串的初始字元來判斷基底。 如果第一個字元是 0,而第二個字元不是 'x' 或 'X',則字串會解譯為八進位整數。 如果第一個字元是 '0' ,而第二個字元是 'x' 或 'X',則字串會解譯為十六進位整數。 如果第一個字元是 '1' 透過 '9',字串會解譯為十進位整數。 透過 (或'a'到'z') 的字母'A''Z' 會指派值 10 到 35。 掃描只允許小於 的 base字母。 基底範圍外的第一個字元會停止掃描。 例如,假設 string 開頭為 "01"。 如果 base 為 0,掃描器會假設它是八進位整數。
'8'或 '9' 字元會停止掃描。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
一般文字常式對應
| TCHAR.H 常式 |
_UNICODE 和 _MBCS 未定義 |
_MBCS 已定義 |
_UNICODE 已定義 |
|---|---|---|---|
_tcstol |
strtol |
strtol |
wcstol |
_tcstol_l |
_strtol_l |
_strtol_l |
_wcstol_l |
需求
| 常式 | 必要的標頭 |
|---|---|
strtol |
<stdlib.h> |
wcstol |
<stdlib.h> 或 <wchar.h> |
_strtol_l |
<stdlib.h> |
_wcstol_l |
<stdlib.h> 或 <wchar.h> |
和 _strtol_l 函_wcstol_l式Microsoft特定,而不是標準 C 連結庫的一部分。 如需相容性詳細資訊,請參閱相容性。
範例
請參閱 strtod 的範例。
另請參閱
資料轉換
地區設定
localeconv
setlocale、_wsetlocale
字串到數值函式
strtod、 、 _strtod_l、 wcstod_wcstod_l
strtoll、 、 _strtoll_l、 wcstoll_wcstoll_l
strtoul、 、 _strtoul_l、 wcstoul_wcstoul_l
atof、 、 _atof_l、 _wtof_wtof_l