最終更新日時:
が更新

履歴 編集

function
<cwchar>

std::wcstoul

namespace std {
  unsigned long int wcstoul(const wchar_t* nptr, wchar_t** endptr, int base);
}

概要

ワイド文字列nptrunsigned long型の整数に変換する。文字列はbaseで指定された基数に従って解釈される。

解釈の規則は、マルチバイト文字列版のstd::strtoul()と同じである。

  • endptrが非nullptrの場合、変換が終了した位置の文字へのポインタがそこに格納される
  • 基数baseは2〜36、または0の値をとる。0の場合は、0x0Xで始まれば16進数、0で始まれば8進数、それ以外は10進数として解釈される

戻り値

  • 変換可能ならば変換後の数値を返す
  • 変換後の数値がunsigned longの範囲外の場合、その型の最大値または最小値を返し、errnoERANGEを設定する
  • 変換不可能ならば0を返す

備考

  • 変換できたかどうかは、戻り値ではなくendptrnptrから進んだかどうかで判定する

#include <cwchar>
#include <iostream>

int main()
{
  wchar_t* end = nullptr;

  // 16進数として変換する
  unsigned long a = std::wcstoul(L"ff", &end, 16);
  std::wcout << a << std::endl;

  // 変換が終了した位置以降の文字列
  std::wcout << std::wcstoul(L"12abc", &end, 10) << std::endl;
  std::wcout << end << std::endl;
}

出力

255
12
abc

バージョン

言語

  • C++98

関連項目