Conversões de cadeias: to_string e stoi
Converta com segurança entre cadeias e tipos numéricos usando std::to_string, std::stoi e std::stod.
Conversões de cadeias: to_string e stoi é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.
Por que as conversões de cadeias de caracteres são importantes
Você precisa converter constantemente números em texto e texto em números — para entrada do usuário, arquivos de configuração, JSON, URLs e registros.
std::to_string
std::to_string converte qualquer tipo numérico integrado em uma cadeia de caracteres. Ela usa a formatação padrão.
#include <string>
std::string a = std::to_string(42); // "42"
std::string b = std::to_string(-7); // "-7"
std::string c = std::to_string(3.14); // "3.140000"Formatação padrão de ponto flutuante
to_string aplicado a um double usa seis casas decimais. Para ter controle preciso, use std::stringstream com std::fixed e std::setprecision, ou std::format no C++20.
std::stoi: cadeia de caracteres para int
Analise um inteiro com std::stoi. Ele ignora os espaços em branco iniciais e para no primeiro caractere que não seja um dígito.
int n = std::stoi("42"); // 42
int m = std::stoi(" -7abc"); // -7 (stops at 'a')Lendo a posição final
Passe um ponteiro para receber o índice onde a análise parou — isso é útil para analisar cadeias de caracteres mistas.
std::string s = "42px";
size_t pos;
int n = std::stoi(s, &pos);
std::cout << pos; // 2 (parsed "42", stopped at 'p')Stoi lança exceção para entrada inválida
Se nenhum dígito for encontrado, stoi lança std::invalid_argument. Se o número ultrapassar os limites, ele lança std::out_of_range.
try {
int x = std::stoi("not_a_number");
} catch (const std::invalid_argument& e) {
std::cout << "Parse failed";
}Conversões de base
O terceiro argumento seleciona a base (2–36). Passe 0 para detectá-la automaticamente a partir do prefixo.
int hex = std::stoi("ff", nullptr, 16); // 255
int bin = std::stoi("1010", nullptr, 2); // 10
int auto_detect = std::stoi("0xff", nullptr, 0); // 255stol stoll stoul stoull
Variantes para os outros tipos inteiros:
std::stol— longstd::stoll— long longstd::stoul— unsigned longstd::stoull— unsigned long long
stof stod stold
Variantes de ponto flutuante para float, double e long double.
double d = std::stod("3.14159");
float f = std::stof("2.71");C++17 std::from_chars: sem exceções
std::from_chars analisa sem lançar exceções. Ele retorna uma estrutura com ec (código de erro) e ptr (posição final da análise) — é a opção preferida em laços críticos de desempenho.
#include <charconv>
std::string s = "42";
int val;
auto result = std::from_chars(s.data(), s.data() + s.size(), val);
if (result.ec == std::errc{}) {
// success
}C++17 std::to_chars: sem alocação
É o inverso de from_chars: escreve um número em um buffer sem fazer alocações. É a conversão mais rápida disponível na biblioteca padrão.
Verificação rápida
Qual exceção std::stoi("abc") lança?
Recapitulação
std::to_string converte números em cadeias de caracteres; std::stoi e funções semelhantes analisam cadeias de caracteres para obter números. Ambas lançam exceções em caso de falha — use std::from_chars para uma análise de alto desempenho sem exceções.
Perguntas Frequentes
A aula “Conversões de cadeias: to_string e stoi” é grátis?
Sim — o texto completo de “Conversões de cadeias: to_string e stoi” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.
O que vou aprender em “Conversões de cadeias: to_string e stoi”?
Converta com segurança entre cadeias e tipos numéricos usando std::to_string, std::stoi e std::stod. Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C++ Academy?
Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Conversões de cadeias: to_string e stoi”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C++ Academy?
Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- std::string versus matrizes de caracteres no estilo C
- Operações com cadeias: concatenação, substr, busca e substituição
- Fluxo de cadeias stringstream para análise
- Conversões de cadeias: to_string e stoi