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
Libérer: 2024-12-10 22:20:15
original
351 Les gens l'ont consulté

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'
Copier après la connexion

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'
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal