namespace std {
intmax_t
strtoimax(const char* nptr,
char** endptr,
int base);
}
概要
文字列nptrを、最大幅の符号付き整数型 intmax_t に変換する。文字列はbaseで指定された基数に従って解釈される。
endptrが非nullptrの場合、変換が終了した位置の文字へのポインタがそこに格納される。
基数baseは 2〜36 または 0 の値を取る。baseが0の場合、
- 文字列の先頭が
0xまたは0Xのときは16進数 - 文字列の先頭が
0のときは8進数 - その他のときは10進数
として変換する。
この関数は、std::strtol()の変換先の型をintmax_tにしたものである。
戻り値
- 変換可能ならば変換後の数値。
- 変換後の数値が
intmax_tの範囲外の場合、INTMAX_MAXまたはINTMAX_MIN。 - 変換不可能なら
0を返す。
備考
- 変換後の数値が
intmax_tの範囲を超えるときは、errnoにERANGEが設定される。
例
#include <iostream>
#include <cinttypes>
int main()
{
char* end = nullptr;
std::intmax_t x = std::strtoimax(" -0x1F rest", &end, 0);
std::cout << x << std::endl;
std::cout << "未変換部分: \"" << end << "\"" << std::endl;
}
出力
-31
未変換部分: " rest"
バージョン
言語
- C++11