Maison >développement back-end >C++ >Comment puis-je convertir efficacement un chiffre de caractère en un entier sans utiliser de chaînes ?

Comment puis-je convertir efficacement un chiffre de caractère en un entier sans utiliser de chaînes ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 22:20:15352parcourir

How Can I Efficiently Convert a Character Digit to an Integer without Using Strings?

Conversion d'un caractère en un Int sans intermédiaires de chaîne

Les programmeurs sont souvent confrontés à la tâche d'extraire des chiffres numériques d'une chaîne de caractères pour les utiliser dans calculs. Si l'accès aux caractères individuels par index est simple, la question se pose : comment convertir ces caractères en entiers ?

L'approche traditionnelle consiste à utiliser la fonction atoi(), qui prend une chaîne comme argument. Cependant, cela nécessite d’abord de convertir chaque caractère en chaîne. Existe-t-il une méthode plus efficace ?

Exploiter les encodages de caractères

La réponse réside dans l'exploitation du fait que les encodages de caractères pour les chiffres sont séquentiels, allant de 48 (pour ' 0') à 57 (pour '9'). Cette cohérence est valable pour divers encodages, notamment ASCII, UTF-x et la plupart des autres.

Par conséquent, l'équivalent entier d'un caractère numérique est simplement le caractère moins « 0 », ou 48.

Considérez l'extrait de code suivant :

char c = '1';
int i = c - '0'; // i is now equal to 1, not '1'

Ce code attribue la valeur entière 1 à la variable i. Alternativement, l'extrait de code suivant permet d'obtenir le même résultat :

char c = '1';
int i = c - 48; // i is now equal to 1, not '1'

Bien que les deux méthodes produisent le résultat souhaité, la soustraction de « 0 » est considérée comme plus lisible et efficace.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn