std::strtoimax, std::strtoumax

来自cppreference.com
< cpp‎ | string‎ | byte

定义于头文件 <cinttypes>
std::intmax_t strtoimax(const char* nptr, char** endptr, int base);
(C++11 起)
std::uintmax_t strtoumax(const char* nptr, char** endptr, int base);
(C++11 起)
。解释一个整数值,一个字节串所指向的nptr.
原文:
Interprets an integer value in a byte string pointed to by nptr.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

舍弃所有空白符(以调用 isspace() 鉴别),直到找到首个非空白符,然后取尽可能多的字符组成底 n (其中 n=base )的整数表示,并将它们转换成一个整数值。合法的整数值由下列部分组成:

  • (可选)正或负号
  • (可选)指示八进制底的前缀( 0 )(仅当底为 80 时应用)
  • (可选)指示十六进制底的前缀( 0x0X )(仅当底为 160 时应用)
  • 一个数字序列

底的合法集是 {0,2,3,...,36} 。合法数字集对于底 2 整数是 {0,1},对于底3整数是 {0,1,2} ,以此类推。对于大于 10 的底,合法数字包含字母字符,从对于底 11 整数的 Aa 到对于底36整数的 Zz 。忽略字符大小写。

当前安装的 C 本地环境可能接受另外的数字格式。

若 base 为 0 ,则自动检测数值进制:若前缀为 0 ,则底为八进制,若前缀为 0x0X ,则底为十六进制,否则底为十进制。

若符号是输入序列的一部分,则对从数字序列计算得来的数字值取反,如同用结果类型的一元减

。的功能设置的指针所指向的endptr指向过去的字符的最后一个字符解释。 endptrNULL,被忽视。
原文:
The functions sets the pointer pointed to by endptr to point to the character past the last character interpreted. If endptr is NULL, it is ignored.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
。如果nptr是空的,或者没有预期的形式,无需转换,(如果enptr是不NULLnptr)的值存储在指向的对象的endptr.
原文:
If the nptr is empty or does not have the expected form, no conversion is performed, and (if enptr is not NULL) the value of nptr is stored in the object pointed to by endptr.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 。参数。

nptr -
。 null结尾的字节串的指针进行解释。
原文:
pointer to the null-terminated byte string to be interpreted
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
endptr -
。字符指针的指针.
原文:
pointer to a pointer to character.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
base -
。 “基地”的解释的整数值。
原文:
base of the interpreted integer value
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

===。 返回值。===

  • 。如果成功的话,一个整数值对应的内容str退货。.
    原文:
    If successful, an integer value corresponding to the contents of str is returned.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。
  • 。如果转换的值落在相应的返回类型的范围,发生范围错误(设置errnoERANGE)和INTMAX_MAXINTMAX_MINUINTMAX_MAX0返回,适当.
    原文:
    If the converted value falls out of range of corresponding return type, a range error occurs (setting errno to ERANGE) and INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX or 0 is returned, as appropriate.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。
  • 。如果没有可以进行转换,0返回.
    原文:
    If no conversion can be performed, 0 is returned.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 。为例。

#include <iostream>
#include <string>
#include <cinttypes>
 
int main()
{
    std::string str = "helloworld";
    std::intmax_t val = std::strtoimax(str.c_str(), nullptr, 36);
    std::cout << str << " in base 36 is " << val << " in base 10\n";
 
    char* nptr;
    val = std::strtoimax(str.c_str(), &nptr, 30);
    if(nptr != &str[0] + str.size())
        std::cout << str << " in base 30 is invalid."
                  << " The first invalid digit is " << *nptr << '\n';
}

输出:

helloworld in base 36 is 1767707668033969 in base 10
helloworld in base 30 is invalid. The first invalid digit is w

[编辑] 。另请参阅。

(C++11)
(C++11)
转换宽字符串为 std::intmax_tstd::uintmax_t
(函数) [编辑]
将单字节字符串转换为整数值
原文:
converts a byte string to an integer value
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数) [编辑]
将单字节字符串转换为无符号整数值
原文:
converts a byte string to an unsigned integer value
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数) [编辑]
strtoimaxstrtoumaxC 文档