函数模板
<string>

std::stoll

long long stoll (const string&  str, size_t* idx = 0, int base = 10);long long stoll (const wstring& str, size_t* idx = 0, int base = 10);
将字符串转换为长长整型
该函数解析str,将其内容解释为指定base的整型数字,并将其作为以下类型的值返回:long long.

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

此函数使用 strtoll(或 wcstoll)执行转换(有关转换过程的更多详细信息,请参阅 strtol)。

参数

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

返回值

成功时,函数将转换后的整型数字作为以下类型的值返回:long long.

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// stoll example
#include <iostream>   // std::cout
#include <string>     // std::string, std::stoll

int main ()
{
  std::string str = "8246821 0xffff 020";

  std::string::size_type sz = 0;   // alias of size_t

  while (!str.empty()) {
    long long ll = std::stoll (str,&sz,0);
    std::cout << str.substr(0,sz) << " interpreted as " << ll << '\n';
    str = str.substr(sz);
  }

  return 0;
}

输出
8246821 interpreted as 8246821
 0xffff interpreted as 65535
 020 interpreted as 16


复杂度

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

数据竞争

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

异常

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

)。如果读取的值超出了long long,则抛出out_of_range异常。

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

另见