Obtenha o valor ASCII de Char em C++

Jinku Hu 12 outubro 2023
  1. Use std::copy e std::ostream_iterator para obter o valor ASCII de char
  2. Use os especificadores de formato printf para obter o valor ASCII de char
  3. Use int() para obter o valor ASCII de char
Obtenha o valor ASCII de Char em C++

Este artigo explicará vários métodos de como obter o valor ASCII de char em C++.

Use std::copy e std::ostream_iterator para obter o valor ASCII de char

A codificação de caracteres ASCII é quase onipresente em computadores, embora esquemas padrão mais novos tenham surgido desde então, como UTF-8 e outros. Originalmente, letras inglesas codificadas em ASCII, dígitos decimais, símbolos de pontuação e alguns códigos de controle adicionais. Todos esses símbolos são representados usando algum valor inteiro do intervalo [0 - 127]. Uma vez que os tipos char são implementados como inteiros, podemos tratar seus valores e enviá-los para o fluxo cout usando o algoritmo ostream_iterator<int> e std::copy. Observe que as letras do alfabeto subsequentes têm valores numéricos vizinhos.

#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;
}

Resultado:

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

Use os especificadores de formato printf para obter o valor ASCII de char

A função printf é outra alternativa para produzir os valores char com os códigos ASCII correspondentes. Observe que printf aceita ambos os argumentos como tipos char e apenas diferencia os especificadores de formato %c/%d. Embora os últimos especificadores sejam geralmente documentados como formatadores char e int, respectivamente, eles são compatíveis uns com os outros tipos.

#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;
}

Resultado:

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

Use int() para obter o valor ASCII de char

Finalmente, pode-se converter valores char usando a notação int(c) e enviar os valores diretamente para o fluxo cout como qualquer outra variável. Observe que este exemplo é mais estilo C++ do que a versão printf com seus especificadores de formato. Em contraste, os valores de caracteres ASCII podem ser impressos a partir dos valores int usando a notação 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;
}

Resultado:

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

Artigo relacionado - C++ Char