Como Converter Int para ASCII Char em C++

Jinku Hu 12 outubro 2023 C++ C++ Integer
  1. Use Int to Char Assignment para Converter Int to ASCII Char
  2. Utilize sprintf() Função para Converter Int em ASCII Char
Como Converter Int para ASCII Char em C++

Este artigo explicará vários métodos de como converter int para ASCII char C++.

Use Int to Char Assignment para Converter Int to ASCII Char

A codificação de caracteres ASCII é especificada em um formato de 7 bits. Assim, existem 128 caracteres únicos, cada mapeamento para o valor numérico correspondente de 0 a 127.

Uma vez que a linguagem de programação C implementou os tipos char como números abaixo do capô, podemos atribuir uma variável int a uma variável do tipo char e tratá-la como o caractere ASCII correspondente. Por exemplo, empurramos diretamente valores do vetor int para o vetor char e então os emitimos utilizando o método std::copy, exibindo 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 <array>
#include <iostream>
#include <iterator>
#include <vector>

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

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

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

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

  return EXIT_SUCCESS;
}

Resultado:

97; 98; 99; 100; 101; 102; 103;
a; b; c; d; e; f; g;

Alternativamente, podemos emitir diretamente os valores int como caracteres ASCII utilizando a função printf. O printf toma o especificador de formato para o argumento de tipo correspondente, como mostrado na tabela a seguir.

Especificador Descrição
% Imprime um caracter literal % (este tipo não aceita nenhuma bandeira, largura, precisão, campos de comprimento).
d, i int como um número inteiro assinado. O %d e o %i são sinônimos de saída, mas são diferentes quando utilizados com o scanf para entrada (onde utilizar %i interpretará um número como hexadecimal se for precedido por 0x, e octal se for precedido por 0).
u Imprimir int. decimal sem assinatura.
f, F duplo em notação normal (ponto fixo). As notações f e F diferem apenas em como as strings para um número infinito ou NaN são impressas (inf, infinity e nan para f; INF, INFINITY e NAN para F).
e, E valor duplo na forma padrão (d.ddde±dd). Uma conversão E utiliza a letra E (em vez de e) para introduzir o expoente.
g, G dobrar em notação normal ou exponencial, o que for mais apropriado para sua magnitude. O g utiliza letras minúsculas, o G utiliza letras maiúsculas.
x, X int não assinado como um número hexadecimal. O x utiliza letras minúsculas, e o X utiliza letras maiúsculas.
o int não assinado em octal.
s string com termo nulo.
c char (caractere).
p void* (ponteiro para anular) em um formato definido pela implementação.
a, A dupla em notação hexadecimal, começando com 0x ou 0X. a utiliza letras minúsculas, A utiliza letras maiúsculas.
n Imprime nada, mas escreve o número de caracteres escritos com sucesso até agora em um parâmetro de ponteiro inteiro.
#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>

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

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

  for (const auto &number : numbers) {
    printf("%c; ", number);
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Resultado:

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

Utilize sprintf() Função para Converter Int em ASCII Char

A função sprintf é outro método para converter valores int em caracteres. Devemos declarar uma variável char para manter o valor convertido. Esta variável é passada como o primeiro argumento para sprintf e o terceiro parâmetro especifica o número a ser processado. Finalmente, você deve fornecer um dos especificadores de formato como com printf, ele indica o tipo para o qual o valor será convertido.

#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> numbers{97, 98, 99, 100, 101, 102, 103};

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

  return EXIT_SUCCESS;
}
a; b; c; d; e; f; g;
Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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++ Integer