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