HOWTO · C++

Adicionar Int à String em C++

Este artigo demonstra como adicionar int a string em C++

Nesta página

Para acrescentar um inteiro a uma string existente de C++, converta o inteiro em texto e concatene-o. No caso mais comum, std::to_string com std::string::operator+= é a opção mais direta. Você também pode montar um novo resultado com std::stringstream ou converter o valor primeiro e chamar std::string::append.

Escolha a maneira certa de acrescentar um inteiro a uma string

Use std::to_string e += quando já tiver uma string que deseja ampliar. Use std::stringstream para montar uma nova string inserindo texto e valores em um fluxo. Use std::string::append quando quiser especificamente usar a função membro da string; ela também precisa receber texto como argumento. Os exemplos abaixo mostram cada abordagem com o mesmo texto inicial e o mesmo inteiro.

Use std::to_string com +=

std::to_string(number) converte o valor numérico em um std::string, e += acrescenta esse texto à string existente. Este exemplo completo é o ponto de partida recomendado; ele exibe Order number: 12345 em inglês, seguido de uma quebra de linha.
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

#include <iostream>
#include <string>

int main() {
    std::string message = "Order number: ";
    int number = 12345;
    message += std::to_string(number);
    std::cout << message << '\n';
    return 0;
}
Order number: 12345

A mesma função de conversão aceita valores de ponto flutuante. De acordo com especificações mais antigas de C++ e em muitas implementações, std::to_string(12.345) costuma produzir um texto como 12.345000; versões mais recentes de C++ podem formatar valores de ponto flutuante de outra maneira. Não conte com uma representação única nem presuma que os zeros fracionários finais serão removidos. Se precisar de um número específico de casas decimais ou de uma formatação sem zeros finais, use um fluxo com controles de formatação ou outro método de formatação deliberado.

Use std::stringstream para montar uma string

Um std::stringstream aceita valores por meio do operador de inserção <<. Insira o texto inicial e o inteiro e, em seguida, chame .str() para obter o resultado montado. Isso cria uma string de resultado; não acrescenta conteúdo à variável de string original nem a modifica. Inclua <sstream> para usar o tipo de fluxo. Este exemplo exibe Order number: 12345 em inglês, seguido de uma quebra de linha.
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::string message = "Order number: ";
    int number = 12345;
    std::stringstream stream;
    stream << message << number;
    std::cout << stream.str() << '\n';
    return 0;
}
Order number: 12345

Use std::string::append com um inteiro convertido

std::string::append acrescenta dados de caracteres ou texto de uma string, portanto converta o inteiro antes de passá-lo. A sobrecarga que recebe uma string pode receber diretamente o resultado de std::to_string, como mostrado aqui. Este exemplo exibe Order number: 12345 em inglês, seguido de uma quebra de linha.
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

#include <iostream>
#include <string>

int main() {
    std::string message = "Order number: ";
    int number = 12345;
    message.append(std::to_string(number));
    std::cout << message << '\n';
    return 0;
}
Order number: 12345

Não confunda acrescentar um inteiro convertido com a sobrecarga append(count, character): essa sobrecarga acrescenta o caractere especificado várias vezes. Por exemplo, message.append(3, '!') acrescenta !!!; ela não converte o número 3 no texto 3.