Namespaces
Variants

std:: stof, std:: stod, std:: stold

From cppreference.net
std::basic_string
ヘッダーで定義 <string>
float stof ( const std:: string & str, std:: size_t * pos = nullptr ) ;
(1) (C++11以降)
float stof ( const std:: wstring & str, std:: size_t * pos = nullptr ) ;
(2) (C++11以降)
double stod ( const std:: string & str, std:: size_t * pos = nullptr ) ;
(3) (C++11以降)
double stod ( const std:: wstring & str, std:: size_t * pos = nullptr ) ;
(4) (C++11以降)
long double stold ( const std:: string & str, std:: size_t * pos = nullptr ) ;
(5) (C++11以降)
long double stold ( const std:: wstring & str, std:: size_t * pos = nullptr ) ;
(6) (C++11以降)

文字列内の浮動小数点値を解釈します str

ptr を、変換関数内部の char * (1,3,5) 型または wchar_t * (2,4,6) 型の内部ポインタとする。

1) std:: strtof ( str. c_str ( ) , & ptr ) を呼び出す。
2) 関数 std:: wcstof ( str. c_str ( ) , & ptr ) を呼び出します。
3) std:: strtod ( str. c_str ( ) , & ptr ) を呼び出す。
4) std:: wcstod ( str. c_str ( ) , & ptr ) を呼び出す。
5) std:: strtold ( str. c_str ( ) , & ptr ) を呼び出す。
6) std:: wcstold ( str. c_str ( ) , & ptr ) を呼び出す。

関数は( std::isspace によって判定される)空白文字を最初の非空白文字が見つかるまで破棄します。その後、有効な浮動小数点表現を形成するために可能な限りの文字列を取り出し、浮動小数点値に変換します。有効な浮動小数点値は以下のいずれかです:

  • 10進浮動小数点式。以下の部分で構成されます:
  • (オプション) プラスまたはマイナス記号
  • 空でない10進数のシーケンス(現在のC locale によって決定される)に、オプションで小数点文字を含む(仮数部を定義)
  • (オプション) e または E の後に、オプションのマイナスまたはプラス記号と空でない10進数のシーケンスが続く(基数 10 の指数を定義)
  • 16進浮動小数点表現。以下の部分で構成されます:
  • (オプション) プラスまたはマイナス記号
  • 0x または 0X
  • 現在のC locale で決定される小数点文字を含む可能性のある、空でない16進数字のシーケンス(仮数を定義)
  • (オプション) p または P に続く、オプションのマイナスまたはプラス記号と空でない10進数字のシーケンス(基数 2 の指数を定義)
  • infinity 式。以下の部分で構成されています:
  • (オプション) プラスまたはマイナス記号
  • INF または INFINITY 大文字小文字を無視
  • not-a-number 式。以下の部分で構成されます:
  • (optional) プラスまたはマイナス記号
  • NAN または NAN( char_sequence  ) NAN 部分の大文字小文字は無視)。 char_sequence には数字、ラテン文字、アンダースコアのみ使用可能。結果はquiet NaN浮動小数点値となる。
  • 現在インストールされているC ロケール で受け入れられる可能性のあるその他の式。

pos が null ポインタでない場合、 ptr str. c_str ( ) 内で最初に変換されなかった文字のアドレスを受け取り、その文字のインデックスが計算されて * pos に格納され、変換によって処理された文字数が示されます。

目次

パラメータ

str - 変換対象の文字列
pos - 処理された文字数を格納する整数のアドレス

戻り値

指定された浮動小数点型に変換された文字列。

例外

std::invalid_argument 変換が実行できなかった場合。

std::out_of_range 変換された値が結果型の範囲外となる場合、または基盤となる関数( std::strtof std::strtod または std::strtold )が errno ERANGE に設定した場合。

不具合報告

以下の動作変更欠陥報告書は、以前に公開されたC++標準に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2009 C++11 std::out_of_range 変換値が結果型の範囲外となる場合に
スローされない
スローされる
LWG 2403 C++11 stof std::strtod または std::wcstod を呼び出す stof std::strtof または std::wcstof を呼び出す

関連項目

(C++11) (C++11) (C++11)
文字列を符号付き整数に変換する
(関数)
(C++11) (C++11)
文字列を符号なし整数に変換する
(関数)
(C++17)
文字シーケンスを整数または浮動小数点値に変換する
(関数)