Como converter ASCII para Char em C++

Jinku Hu 12 outubro 2023
  1. Usar Operador de Atribuição para Converter Valores ASCII para Cartas em C++
  2. Utilize a função sprintf() para converter o valor ASCII para Char em C++
  3. Utilize char() para converter o valor ASCII em Char
Como converter ASCII para Char em C++

Este artigo demonstrará vários métodos sobre como converter valores ASCII em caracteres em C++.

Usar Operador de Atribuição para Converter Valores ASCII para Cartas em C++

A codificação ASCII suporta 128 caracteres únicos, e cada um deles é mapeado para o valor de caractere correspondente. Uma vez que a linguagem de programação C implementou os tipos char como números abaixo do capô, podemos atribuir valores de int correspondentes às variáveis de caracteres. Como exemplo, podemos empurrar valores do vetor int para o vetor char e então imprimi-los para o console utilizando o algoritmo std::copy, que exibirá os caracteres ASCII como esperado.

Observe que atribuir ao tipo char somente funciona quando o valor int corresponde a um código ASCII, ou seja, está na faixa de 0-127.

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

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

int main() {
  vector<int> ascii_vals{97, 98, 99, 100, 101, 102, 103};
  vector<char> chars{};

  chars.reserve(ascii_vals.size());
  for (auto &n : ascii_vals) {
    chars.push_back(n);
  }
  copy(chars.begin(), chars.end(), std::ostream_iterator<char>(cout, "; "));

  return EXIT_SUCCESS;
}

Resultado:

a; b; c; d; e; f; g;

Utilize a função sprintf() para converter o valor ASCII para Char em C++

A função sprintf é outro método para converter os valores ASCII em caracteres. Nesta solução, declaramos uma array char para armazenar os valores convertidos a cada iteração até que a printf saia para o console. A sprintf toma a array de caracteres como o primeiro argumento. Em seguida, você deve fornecer um especificador de formato %c, que denota um valor de caractere, e este parâmetro indica o tipo para o qual a entrada será convertida. Finalmente, como terceiro parâmetro, você deve fornecer a variável fonte, ou seja, valores ASCII.

#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>

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

int main() {
  vector<int> ascii_vals{97, 98, 99, 100, 101, 102, 103};

  array<char, 5> char_arr{};
  for (auto &n : ascii_vals) {
    sprintf(char_arr.data(), "%c", n);
    printf("%s; ", char_arr.data());
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Resultado:

a; b; c; d; e; f; g;

Utilize char() para converter o valor ASCII em Char

Alternativamente, o char() lançamento pode ser utilizado para converter valores ASCII individuais para o tipo char. O exemplo a seguir demonstra como se poderia emitir caracteres para o console diretamente do vetor int contendo valores ASCII.

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

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

int main() {
  vector<int> ascii_vals{97, 98, 99, 100, 101, 102, 103};

  for (auto &n : ascii_vals) {
    cout << char(n) << endl;
  }

  return EXIT_SUCCESS;
}

Resultado:

a
b
c
d
e
f
g
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