std:: to_chars_result
|
Défini dans l'en-tête
<charconv>
|
||
|
struct
to_chars_result
;
|
(depuis C++17) | |
std::to_chars_result
est le type de retour de
std::to_chars
. Il n'a pas de classes de base et ne possède que les membres suivants.
Table des matières |
Membres de données
| Nom du membre | Définition |
|
ptr
|
un pointeur de type
char
*
(objet membre public) |
|
ec
|
un code d'erreur de type
std::errc
(objet membre public) |
Fonctions membres et amies
operator== (std::to_chars_result)
|
friend
bool
operator
==
(
const
to_chars_result
&
,
const to_chars_result & ) = default ; |
(depuis C++20) | |
Compare les deux arguments en utilisant les
comparaisons par défaut
(qui utilise
operator
==
pour comparer respectivement
ptr
et
ec
).
Cette fonction n'est pas visible pour la recherche non qualifiée ou recherche qualifiée ordinaire, et ne peut être trouvée que par la recherche dépendante des arguments lorsque std::to_chars_result est une classe associée des arguments.
L'opérateur
!=
est
synthétisé
à partir de
operator==
.
operator bool
|
constexpr
explicit
operator
bool
(
)
const
noexcept
;
|
(depuis C++26) | |
Vérifie si la conversion a réussi. Retourne ec == std:: errc { } .
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_to_chars
|
201611L
|
(C++17) | Conversions élémentaires de chaînes ( std::to_chars , std::from_chars ) |
202306L
|
(C++26) | Test de réussite ou d'échec des fonctions <charconv> |
Exemple
#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 // use C++26 structured bindings declaration as condition (P0963) // and C++26 to_chars_result::operator bool() for error checking (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 // use C++26 to_chars_result::operator bool() for error checking (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 // fallback to C++17 if-with-initializer and structured bindings 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); }
Sortie possible :
42 3.14159 -3.14159 -3.142e+00 Value too large for defined data type
Voir aussi
|
(C++17)
|
convertit une valeur entière ou à virgule flottante en une séquence de caractères
(fonction) |