C++/標準ライブラリ/charconv
表示
22.13 Primitive numeric conversions (charconv)
[編集]22.13.1 Header <charconv> synopsis (charconv.syn)
[編集]このセクションでは、<charconv>
ヘッダーに含まれる基本的な数値変換機能について概説します。
- 基本型プレースホルダーの説明
-
integer-type
として指定された関数は、すべてのcv修飾されていない符号付きおよび符号なし整数型とchar
に対してオーバーロードが提供されます。floating-point-type
として指定された関数は、すべてのcv修飾されていない浮動小数点型に対してオーバーロードが提供されます。
- 列挙型
chars_format
-
- 浮動小数点数値変換のための書式指定。
scientific
,fixed
,hex
,general
の4つの書式が定義されています。
namespace std { // floating-point format for primitive numerical conversion enum class chars_format { scientific = unspecified, fixed = unspecified, hex = unspecified, general = fixed | scientific }; // 22.13.2, primitive numerical output conversion struct to_chars_result { char* ptr; errc ec; friend bool operator==(const to_chars_result&, const to_chars_result&) = default; }; constexpr to_chars_result to_chars(char* first, char* last, integer-type value, int base = 10); to_chars_result to_chars(char* first, char* last, bool value, int base = 10) = delete; to_chars_result to_chars(char* first, char* last, floating-point-type value); to_chars_result to_chars(char* first, char* last, floating-point-type value, chars_format fmt); to_chars_result to_chars(char* first, char* last, floating-point-type value, chars_format fmt, int precision); // 22.13.3, primitive numerical input conversion struct from_chars_result { const char* ptr; errc ec; friend bool operator==(const from_chars_result&, const from_chars_result&) = default; }; constexpr from_chars_result from_chars(const char* first, const char* last, integer-type & value, int base = 10); from_chars_result from_chars(const char* first, const char* last, floating-point-type & value, chars_format fmt = chars_format::general); }
chars_format
はビットマスク型であり、scientific
,fixed
,hex
の要素があります。to_chars_result
およびfrom_chars_result
は、データメンバーと特別なメンバーを持つ指定された型です。
22.13.2 Primitive numeric output conversion (charconv.to.chars)
[編集]このセクションでは、to_chars
関数を使用して数値を文字列に変換する方法を説明します。
- 一般的な動作
-
- すべての
to_chars
関数は、数値を文字列に変換し、範囲[first, last)に書き込みます。 - 成功時には、
to_chars_result
のec
メンバーはvalue-initialized
されたerrc
と等しく、ptr
メンバーは書き込まれた文字の終端を指します。 - 失敗時には、
ec
メンバーはerrc::value_too_large
を持ち、ptr
メンバーはlast
を指し、範囲[first, last)の内容は未指定です。
- すべての
- 浮動小数点数値の変換
-
- 精度パラメータなしで浮動小数点数値を受け取る関数は、最小の文字数で値を正確に再現できる文字列を生成します。
- 浮動小数点値を変換する関数で、
chars_format
パラメータを受け取る場合、指定された形式(fixed
,scientific
,hex
,general
)に従って変換を行います。
constexpr to_chars_result to_chars(char* first, char* last, integer-type value, int base = 10); to_chars_result to_chars(char* first, char* last, floating-point-type value); to_chars_result to_chars(char* first, char* last, floating-point-type value, chars_format fmt); to_chars_result to_chars(char* first, char* last, floating-point-type value, chars_format fmt, int precision);
- 整数型の変換
base
は2から36までの値である必要があります。- 負の値の場合、変換された文字列は'-'で始まります。
- 浮動小数点型の変換
- 値は
printf
スタイルで変換され、C
ロケールが使用されます。 chars_format
に従って変換され、必要に応じて精度も指定できます。
22.13.3 Primitive numeric input conversion (charconv.from.chars)
[編集]このセクションでは、from_chars
関数を使用して文字列を数値に変換する方法を説明します。
- 一般的な動作
-
- すべての
from_chars
関数は、文字列[first, last)を解析し、数値に変換します。 - パターンに一致する文字がない場合、値は変更されず、
from_chars_result
のptr
メンバーはfirst
を指し、ec
メンバーはerrc::invalid_argument
と等しくなります。 - 変換に成功した場合、
ptr
メンバーは一致しなかった最初の文字を指し、またはすべての文字が一致した場合はlast
を指します。
- すべての
- 整数型の変換
-
base
は2から36までの値である必要があります。- 符号は負号
-
のみ許可されます。
- 浮動小数点型の変換
-
- 解析パターンは
C
ロケールでのstrtod
と同様です。 chars_format
に応じて、浮動小数点数の変換を行います。
- 解析パターンは
constexpr from_chars_result from_chars(const char* first, const char* last, integer-type & value, int base = 10); from_chars_result from_chars(const char* first, const char* last, floating-point-type & value, chars_format fmt = chars_format::general);
- 整数型の変換
- パターンは指定された基数に基づいており、余分な先行ゼロは含まれません。
- 浮動小数点型の変換
chars_format
に応じた変換を行い、+
符号は指数部分にのみ現れることが許可されます。
このヘッダーは、文字列と数値間の基本的な変換を効率的に行うための機能を提供します。