std:: to_chars_result
|
定義於ヘッダ
<charconv>
|
||
|
struct
to_chars_result
;
|
(C++17以降) | |
std::to_chars_result
は
std::to_chars
の戻り値型です。基底クラスを持たず、以下のメンバーのみを有します。
目次 |
データメンバ
| メンバー名 | 定義 |
|
ptr
|
char
*
型のポインタ
(public member object) |
|
ec
|
std::errc
型のエラーコード
(public member object) |
メンバー関数とフレンド関数
operator== (std::to_chars_result)
|
friend
bool
operator
==
(
const
to_chars_result
&
,
const to_chars_result & ) = default ; |
(C++20以降) | |
2つの引数を
デフォルト比較
を使用して比較します(これは
operator
==
を使用してそれぞれ
ptr
と
ec
を比較します)。
この関数は通常の 非修飾名探索 または 修飾名探索 では可視化されず、 実引数依存探索 によってのみ、std::to_chars_resultが引数の関連クラスである場合に見つけることができます。
!=
演算子は
operator==
から合成
されます。
operator bool
|
constexpr
explicit
operator
bool
(
)
const
noexcept
;
|
(C++26以降) | |
変換が成功したかどうかをチェックします。 ec == std:: errc { } を返します。
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_to_chars
|
201611L
|
(C++17) | 基本文字列変換 ( std::to_chars , std::from_chars ) |
202306L
|
(C++26) | <charconv> 関数の成功・失敗テスト |
例
#include <array> #include <charconv> #include <iostream> #include <string_view> #include <system_error> void show_to_chars(auto... format_args) { std::array<char, 10> str; #if __cpp_lib_to_chars >= 202306L and __cpp_structured_bindings >= 202406L // C++26 構造化束縛宣言を条件として使用 (P0963) // および C++26 to_chars_result::operator bool() をエラーチェックに使用 (P2497) if (auto [ptr, ec] = std::to_chars(str.data(), str.data() + str.size(), format_args...)) std::cout << std::string_view(str.data(), ptr) << '\n'; else std::cout << std::make_error_code(ec).message() << '\n'; #elif __cpp_lib_to_chars >= 202306L // C++26 to_chars_result::operator bool() をエラーチェックに使用 (P2497) if (auto result = std::to_chars(str.data(), str.data() + str.size(), format_args...)) std::cout << std::string_view(str.data(), result.ptr) << '\n'; else std::cout << std::make_error_code(result.ec).message() << '\n'; #else // C++17 if-with-initializer と構造化束縛へのフォールバック if (auto [ptr, ec] = std::to_chars(str.data(), str.data() + str.size(), format_args...); ec == std::errc()) std::cout << std::string_view(str.data(), ptr - str.data()) << '\n'; else std::cout << std::make_error_code(ec).message() << '\n'; #endif } int main() { show_to_chars(42); show_to_chars(+3.14159F); show_to_chars(-3.14159, std::chars_format::fixed); show_to_chars(-3.14159, std::chars_format::scientific, 3); show_to_chars(3.1415926535, std::chars_format::fixed, 10); }
出力例:
42 3.14159 -3.14159 -3.142e+00 Value too large for defined data type
関連項目
|
(C++17)
|
整数または浮動小数点値を文字シーケンスに変換する
(関数) |