Namespaces
Variants

std:: strtoimax, std:: strtoumax

From cppreference.net
Défini dans l'en-tête <cinttypes>
std:: intmax_t strtoimax ( const char * nptr, char ** endptr, int base ) ;
(1) (depuis C++11)
std:: uintmax_t strtoumax ( const char * nptr, char ** endptr, int base ) ;
(2) (depuis C++11)

Interprète une valeur entière dans une chaîne d'octets pointée par nptr .

Ignore tous les caractères d'espacement (identifiés en appelant std::isspace ) jusqu'au premier caractère non-espace, puis prend autant de caractères que possible pour former une représentation base-n valide (où n= base ) d'un nombre entier et les convertit en une valeur entière. La valeur entière valide se compose des parties suivantes :

  • (optionnel) signe plus ou moins
  • (optionnel) préfixe ( 0 ) indiquant la base octale (s'applique uniquement lorsque la base est 8 ou 0 )
  • (optionnel) préfixe ( 0x ou 0X ) indiquant la base hexadécimale (s'applique uniquement lorsque la base est 16 ou 0 )
  • une séquence de chiffres

L'ensemble des valeurs valides pour la base est {0, 2, 3, ..., 36} . L'ensemble des chiffres valides pour les entiers en base 2 est {0, 1} , pour les entiers en base 3 est {0, 1, 2} , et ainsi de suite. Pour les bases supérieures à 10 , les chiffres valides incluent des caractères alphabétiques, commençant par Aa pour les entiers en base 11 , jusqu'à Zz pour les entiers en base 36 . La casse des caractères est ignorée.

Des formats numériques supplémentaires peuvent être acceptés par la locale C locale actuellement installée.

Si la valeur de base est 0 , la base numérique est auto-détectée : si le préfixe est 0 , la base est octale, si le préfixe est 0x ou 0X , la base est hexadécimale, sinon la base est décimale.

Si le signe moins faisait partie de la séquence d'entrée, la valeur numérique calculée à partir de la séquence de chiffres est niée comme si par unary minus dans le type de résultat.

Les fonctions définissent le pointeur pointé par endptr pour pointer vers le caractère suivant le dernier caractère interprété. Si endptr est un pointeur nul, il est ignoré.

Si le nptr est vide ou ne présente pas la forme attendue, aucune conversion n'est effectuée, et (si enptr n'est pas un pointeur nul) la valeur de nptr est stockée dans l'objet pointé par endptr .

Table des matières

Paramètres

nptr - pointeur vers la chaîne d'octets terminée par un caractère nul à interpréter
endptr - pointeur vers un pointeur de caractère
base - base de la valeur entière interprétée

Valeur de retour

  • Si l'opération réussit, une valeur entière correspondant au contenu de str est retournée.
  • Si la valeur convertie dépasse la plage du type de retour correspondant, une erreur de dépassement se produit (en définissant errno à ERANGE ) et INTMAX_MAX , INTMAX_MIN , UINTMAX_MAX ou 0 est retourné, selon le cas.
  • Si aucune conversion ne peut être effectuée, 0 est retourné.

Exemple

#include <cinttypes>
#include <iostream>
#include <string>
int main()
{
    std::string str = "helloworld";
    std::intmax_t val = std::strtoimax(str.c_str(), nullptr, 36);
    std::cout << str << " in base 36 is " << val << " in base 10\n";
    char* nptr;
    val = std::strtoimax(str.c_str(), &nptr, 30);
    if (nptr != &str[0] + str.size())
        std::cout << str << " in base 30 is invalid."
                  << " The first invalid digit is '" << *nptr << "'\n";
}

Sortie :

helloworld in base 36 is 1767707668033969 in base 10
helloworld in base 30 is invalid. The first invalid digit is 'w'

Voir aussi

(C++11) (C++11) (C++11)
convertit une chaîne en entier signé
(fonction)
(C++11) (C++11)
convertit une chaîne en entier non signé
(fonction)
convertit une chaîne d'octets en valeur entière
(fonction)
convertit une chaîne d'octets en valeur entière non signée
(fonction)
(C++11) (C++11)
convertit une chaîne large en std::intmax_t ou std::uintmax_t
(fonction)
convertit une chaîne d'octets en valeur flottante
(fonction)
(C++17)
convertit une séquence de caractères en valeur entière ou flottante
(fonction)
convertit une chaîne d'octets en valeur entière
(fonction)
Documentation C pour strtoimax , strtoumax