📅  最后修改于: 2023-12-03 15:29:41.723000             🧑  作者: Mango
wcstol()
函数wcstol()
是 C/C++ 标准库中的函数之一,用于将给定的字符串转换为长整型数值。它的函数原型如下所示:
long int wcstol(const wchar_t *nptr, wchar_t **endptr, int base);
其中,nptr
表示需要转换的字符串;endptr
表示非法字符的位置,如果没有非法字符,它将会指向字符串的末尾;base
表示进制,即字符串中数值的基数,它可以是 2、8、10、16 或者 0(根据字符串的前缀来自动判断进制)。
函数返回被转换的长整型数值。如果输入字符串不包含任何数字,那么函数将返回 0。如果转换出的数值超出了长整型数值的表示范围,那么会触发溢出错误。
下面是一个简单的例子:
#include <iostream>
#include <cstdlib>
#include <cwchar>
int main() {
wchar_t str[] = L"12345";
wchar_t *endptr;
long int num = wcstol(str, &endptr, 10);
std::wcout << num << std::endl;
std::wcout << L"非法字符位于:" << endptr - str << std::endl;
return 0;
}
程序输出:
12345
非法字符位于:5
上述代码中,wcstol()
函数将字符串 str
转换为长整型数值,并将结果存储在变量 num
中。指针 endptr
会指向字符串中第一个非法字符的位置(如果有的话),这里由于字符串是合法的,因此它将会指向字符串的末尾。最后输出了转换后的数值和非法字符的位置。
除了 wcstol()
外,标准库中还有一系列类似的函数,它们都用于将不同类型的字符串转换为数值型数据:
strtol()
:和 wcstol()
功能相同,但输入字符串是 char 类型的。strtoul()
:和 strtol()
相同,但返回无符号长整型数值。atol()
:功能和 strtol()
相同,但输入的字符串不需要传入 endptr
指针。atoll()
:可以将字符串转换为长长整型数值。综上,wcstol()
是一个非常实用的函数,可以帮助程序员快速、方便地将字符串转换为长整型数值。