Dominando o Tipo Char em C++: Declaração, ASCII e Técnicas de Conversão
O que é um Char?
O tipo char em C++ é um tipo de dado integral fundamental que armazena um único caractere. Internamente, é representado como um inteiro de 8 bits, ocupando exatamente um byte de memória. Por ser um tipo integral, pode participar de operações aritméticas e comparações como outros tipos numéricos.
Neste tutorial, você aprenderá:
- Definindo uma variável
char - Entendendo ASCII e seu papel na representação de caracteres
- Imprimindo códigos ASCII e valores de caracteres
- Lendo caracteres da entrada do usuário
- Convertendo entre caracteres e strings de múltiplas formas
ASCII – A Codificação Subjacente
Quando um valor char é armazenado, o compilador C++ o interpreta como um código ASCII, o American Standard Code for Information Interchange. ASCII atribui um valor inteiro (0–127) a cada caractere imprimível. Por exemplo, a letra 'a' corresponde ao valor decimal 97.
Declarando uma Variável Char
Para declarar uma variável de caractere, use a palavra-chave char seguida por um nome. Você pode opcionalmente inicializá-la com um literal de caractere único entre aspas simples.
char nomeVariavel; // Declaração
char nomeVariavel = 'X'; // Declaração com inicialização
Exemplo 1: Declarando e Imprimindo um Char
#include <iostream>
using namespace std;
int main() {
char nota = 'B';
cout << "Tirei nota: " << nota;
return 0;
}
Imprimindo o Valor ASCII de um Caractere
Como um char é essencialmente um inteiro, você pode fazer cast para int para revelar seu código ASCII.
Exemplo 2: Entrada do Usuário e Saída ASCII
#include <iostream>
using namespace std;
int main() {
char ch;
cout << "Digite qualquer caractere: ";
cin >> ch;
cout << "O valor ASCII de " << ch << " é " << int(ch);
return 0;
}
Imprimindo um Char a partir de um Código ASCII
Atribuir um literal inteiro a uma variável char faz o compilador interpretar aquele inteiro como um código ASCII e armazenar o caractere correspondente.
Exemplo 3: Conversão ASCII para Char
#include <iostream>
using namespace std;
int main() {
char x = 64, y = 66, z = 71;
cout << x << y << z;
return 0;
}
Saída: @BG (64=@, 66=B, 71=G)
Lendo Caracteres do Usuário
O operador de extração >> lê apenas o primeiro caractere não-whitespace inserido. Caracteres subsequentes permanecem no buffer de entrada até serem lidos.
Exemplo 4: Lendo Dois Caracteres
#include <iostream>
using namespace std;
int main() {
cout << "Digite uma sequência de caracteres: ";
char ch;
cin >> ch;
cout << "O código ASCII de " << ch << " é " << int(ch) << '\n';
cin >> ch;
cout << "O código ASCII de " << ch << " é " << int(ch) << '\n';
return 0;
}
Convertendo um Caractere para String
Várias técnicas existem para transformar um único caractere em um std::string. Abaixo estão as abordagens mais comuns.
#1 – Usando o Construtor da String
string st(1, 'C');
Isso cria uma string de comprimento um contendo o caractere 'C'.
Exemplo 5
#include <iostream>
#include <string>
using namespace std;
int main() {
string st(1, 'C');
cout << "A string resultante é: " << st;
return 0;
}
#2 – Usando Operadores = e += Sobrecarregados
Atribuir um caractere diretamente a uma string ou anexá-lo é conciso e legível.
Exemplo 6
#include <iostream>
#include <string>
using namespace std;
int main() {
string st;
char b = 'B';
st = 'A';
st += b;
cout << "A string resultante é: " << st;
return 0;
}
#3 – Usando Funções Membro da String
push_back(char)– Adiciona um caractere ao final.append(size_t, char)– Adiciona múltiplas cópias de um caractere.assign(size_t, char)– Substitui a string por múltiplas cópias de um caractere.insert(size_t, size_t, char)– Insere caracteres em posição especificada.
Exemplo 7
#include <iostream>
#include <string>
using namespace std;
int main() {
string st;
st.push_back('A');
cout << "push_back A retorna: " << st << endl;
st = "";
st.append(1, 'C');
cout << "append C retorna: " << st << endl;
st = "";
st.assign(1, 'D');
cout << "assign D retorna: " << st << endl;
st.insert(0, 1, 'E');
cout << "insert caractere único retorna: " << st << endl;
return 0;
}
#4 – Usando std::stringstream
Operadores de stream são sobrecarregados para char, permitindo conversão fácil para string.
Exemplo 8
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
string st;
stringstream myst;
myst << 'A';
myst >> st;
cout << "A conversão do caractere único retorna a string: " << st;
return 0;
}
Principais Conclusões
- Um
charé um tipo integral de 8 bits que armazena um único caractere. - Ocupa um byte e é armazenado como código ASCII (0–127).
- Códigos ASCII podem ser revelados fazendo cast de
charparaint. - Caracteres podem ser convertidos para strings usando construtores, operadores de atribuição, funções membro ou string streams.
Linguagem C
- Entendendo Tipos de Dados em C++: Fundamentos, Modificadores e Boas Práticas
- Dominando Type Casting em Java: De Widening a Narrowing e Além
- Aproveitando Dados na Internet da Confiabilidade: Estratégias para Gestão Eficaz
- Laço do-while em C++: Sintaxe, Exemplos Práticos e Loops Aninhados
- Dominando Ponteiros em C++: Conceitos, Exemplos e Aplicações Práticas
- Sobrecarga de Operadores em C++: Guia Prático com Exemplos de Código
- Structs em C++ Explicadas com Exemplo Prático
- Dominando std::list em C++: Sintaxe, Funções e Exemplos Práticos
- Funções em C++ Explicadas com Exemplos Práticos de Código
- Maximize ROI de IoT com Monitoramento Avançado de Performance