function template
<string>

std::stoul

unsigned long stoul (const string&  str, size_t* idx = 0, int base = 10);unsigned long stoul (const wstring& str, size_t* idx = 0, int base = 10);
将字符串转换为无符号整数
解析str,将其内容解释为指定base的整数,并返回unsigned longlong int

的值返回。如果idx不是空指针,函数还会将idx的值设置为str中数字之后第一个字符的位置。

该函数使用 strtoul(或 wcstoul)进行转换(有关转换过程的更多详细信息,请参见 strtol)。

参数

str
具有整型数字表示的字符串对象。
idx
指向类型为 size_t 的对象的指针,其值由函数设置为str中数值之后下一个字符的位置。
该参数也可以是一个空指针,此时它将不被使用。
base
决定有效字符及其解释的数字基数(radix)。
如果这个是0,则使用的基数由序列中的格式确定(有关详细信息,请参阅strtol)。请注意,默认情况下此参数为10,而不是0.

返回值

成功时,该函数将其转换后的整型数字作为unsigned longlong int

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// stoul example
#include <iostream>   // std::cin, std::cout
#include <string>     // std::string, std::stoul, std::getline

int main ()
{
  std::string str;
  std::cout << "Enter an unsigned number: ";
  std::getline (std::cin,str);
  unsigned long ul = std::stoul (str,nullptr,0);
  std::cout << "You entered: " << ul << '\n';
  return 0;
}

复杂度

未定义,但通常与解释的字符数呈线性关系。

数据竞争

修改idx指向的值 (如果idx不为零)。

异常

如果无法执行任何转换,则抛出invalid_argument异常。

如果读取的值超出了可表示范围unsigned long,则抛出out_of_range异常。

无效的idx会导致未定义行为

另见