最終更新日時:
が更新

履歴 編集

function
<cinttypes>

std::strtoimax(C++11)

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の範囲を超えるときは、errnoERANGEが設定される。

#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

関連項目

参照