Obtenga el valor ASCII de Char en C++

Jinku Hu 12 octubre 2023
  1. Utilice std::copy y std::ostream_iterator para obtener el valor ASCII de char
  2. Utilice especificadores de formato printf para obtener el valor ASCII de char
  3. Utilice int() para obtener el valor ASCII de char
Obtenga el valor ASCII de Char en C++

Este artículo explicará varios métodos de cómo obtener el valor ASCII de char en C++.

Utilice std::copy y std::ostream_iterator para obtener el valor ASCII de char

La codificación de caracteres ASCII es casi omnipresente en las computadoras, aunque desde entonces surgieron nuevos esquemas estándar, como UTF-8 y otros. Originalmente, ASCII codificaba letras en inglés, dígitos decimales, símbolos de puntuación y algunos códigos de control adicionales. Todos estos símbolos se representan utilizando algún valor entero del rango [0 - 127]. Dado que los tipos char se implementan como enteros, podemos tratar sus valores y enviarlos al flujo cout usando el algoritmo ostream_iterator<int> y std::copy. Observe que las letras del alfabeto consecuentes tienen valores numéricos vecinos.

#include <iostream>
#include <iterator>
#include <vector>

using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> chars{'g', 'h', 'T', 'U', 'q', '%', '+', '!', '1', '2', '3'};

  cout << "chars: ";
  std::copy(chars.begin(), chars.end(), std::ostream_iterator<int>(cout, "; "));

  return EXIT_SUCCESS;
}

Producción :

chars: 103; 104; 84; 85; 113; 37; 43; 33; 49; 50; 51;

Utilice especificadores de formato printf para obtener el valor ASCII de char

La función printf es otra alternativa para generar los valores char con los códigos ASCII correspondientes. Tenga en cuenta que printf toma ambos argumentos como tipos char y solo diferencia los especificadores de formato %c/%d. Aunque los últimos especificadores suelen estar documentados como formateadores char e int, respectivamente, son compatibles con los tipos de los demás.

#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> chars{'g', 'h', 'T', 'U', 'q', '%', '+', '!', '1', '2', '3'};

  cout << endl;
  for (const auto &number : chars) {
    printf("The ASCII value of '%c' is: %d\n", number, number);
  }

  return EXIT_SUCCESS;
}

Producción :

The ASCII value of 'g' is: 103
The ASCII value of 'h' is: 104
The ASCII value of 'T' is: 84
The ASCII value of 'U' is: 85
The ASCII value of 'q' is: 113
The ASCII value of '%' is: 37
The ASCII value of '+' is: 43
The ASCII value of '!' is: 33
The ASCII value of '1' is: 49
The ASCII value of '2' is: 50
The ASCII value of '3' is: 51

Utilice int() para obtener el valor ASCII de char

Finalmente, uno puede convertir valores char usando la notación int(c) y enviar los valores directamente al flujo cout como cualquier otra variable. Tenga en cuenta que este ejemplo tiene más estilo C++ que la versión printf con sus especificadores de formato. Por el contrario, los valores de caracteres ASCII se pueden imprimir a partir de los valores int utilizando la notación char(i).

#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> chars{'g', 'h', 'T', 'U', 'q', '%', '+', '!', '1', '2', '3'};

  cout << endl;
  for (auto &number : chars) {
    cout << "The ASCII value of '" << number << "' is: " << int(number) << endl;
  }

  return EXIT_SUCCESS;
}

Producción :

The ASCII value of 'g' is: 103
The ASCII value of 'h' is: 104
The ASCII value of 'T' is: 84
The ASCII value of 'U' is: 85
The ASCII value of 'q' is: 113
The ASCII value of '%' is: 37
The ASCII value of '+' is: 43
The ASCII value of '!' is: 33
The ASCII value of '1' is: 49
The ASCII value of '2' is: 50
The ASCII value of '3' is: 51
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - C++ Char