c string conversion functions
Este tutorial cobre as funções de conversão de string C ++ que podem ser usadas para converter a string em int & double e int em uma string etc .:
É comum converter strings em números como inteiros e duplos quando estamos desenvolvendo aplicativos C ++.
Este tópico cobre as funções que podem ser usadas para converter efetivamente as strings em int & double e os valores numéricos em uma string.
=> Leia a popular série de treinamento C ++ aqui.
melhor software de backup grátis para mac
O que você aprenderá:
Funções de conversão de string C ++
Quando programamos aplicações em C ++, torna-se necessário converter dados de um tipo para outro. A conversão de dados deve ser tal que nenhum dado seja perdido quando convertemos os dados existentes para um novo tipo. Isso é especialmente verdadeiro quando convertemos dados de string em números e vice-versa.
Neste tutorial, discutiremos as várias funções para converter o objeto std :: string em tipos de dados numéricos, incluindo inteiro e duplo.
Converter string em tipos numéricos em C ++
Em geral, existem dois métodos comuns para converter strings em números em C ++.
- Usando funções stoi e atoi que se replicam para todos os tipos de dados numéricos.
- Usando a classe stringstream.
Vamos discutir cada método em detalhes.
Usando funções stoi e atoi
A classe std :: string suporta várias funções para converter string em inteiro, longo, duplo, flutuante, etc. As funções de conversão suportadas por std :: string são tabularizadas da seguinte forma:
Função | Descrição |
---|---|
de pé roubar Stoll | Converte string em inteiro (incluindo tipos longos e longos). |
atoi atol atol | Converte a string de byte em inteiro (incluindo tipos longos e longos). |
ficou pó stold | Converte string de bytes em valores de ponto flutuante (incluindo tipos float, double e long double). |
Stoul ainda | Converte string de byte em inteiro sem sinal (incluindo tipos longos sem sinal e longos sem sinal). |
Nota: Exceto para as funções de conversão de string de byte (atoi), todas as outras funções de conversão estão presentes do C ++ 11 em diante. Agora vamos discutir as funções de conversão para converter string em int e string em double.
String para int Usando stoi () e atoi ()
de pé()
Protótipo de função: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Parâmetro (s):
str => String para converter
pos => Endereço de um inteiro para armazenar o número de caracteres processados; padrão = 0
base => O número base; padrão = 0
Valor de retorno: Inteiro equivalente à string especificada.
Exceções: std :: invalid_argument => Se nenhuma conversão pode ser realizada.
Std :: out_of_range => Se o valor convertido estiver fora do intervalo do tipo de resultado.
Descrição: A função stoi () recebe uma string como argumento e retorna um valor inteiro. Ele lançará uma exceção se o valor convertido estiver fora do intervalo ou se a conversão não puder ser realizada.
Vamos dar um exemplo de programação para entender melhor essa função.
#include #include using namespace std; int main() { string mystr1 = '53'; string mystr2 = '3.142'; string mystr3 = '31477 with char'; int strint1 = stoi(mystr1); int strint2 = stoi(mystr2); int strint3 = stoi(mystr3); cout << 'stoi('' << mystr1 << '') is ' << strint1 << '
'; cout << 'stoi('' << mystr2 << '') is ' << strint2 << '
'; cout << 'stoi('' << mystr3 << '') is ' << strint3 << '
'; }
Resultado:
representa (“53”) é 53
significa (“3.142”) é 3
stoi (“31477 com char”) é 31477
No programa acima, usamos a função stoi com três strings diferentes. Observe que, ao converter os dados da string em um valor inteiro, a função descarta os espaços em branco ou quaisquer outros caracteres.
Portanto, no caso de mystr2 (3.142), a função descartou tudo após o ponto decimal. Da mesma forma, no caso de mystr3 (“31477 com char”), apenas o número foi levado em consideração. Outros conteúdos da string foram descartados.
atoi ()
Protótipo de função: int atoi (const char * str);
Parâmetro (s): str => Ponteiro para string de bytes terminada em nulo.
Valor de retorno:
Sucesso => valor inteiro correspondente ao argumento str.
Falha => Indefinido se o valor convertido estiver fora do intervalo.
0 => Se nenhuma conversão pode ser realizada.
Descrição: Esta função converte uma string de bytes em um valor inteiro. A função atoi () descarta quaisquer espaços em branco até que um caractere diferente de espaço em branco seja encontrado e, em seguida, pega os caracteres um por um para formar uma representação de número inteiro válida e os converte em um inteiro.
Exemplo de função atoi
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; const char *mystr4 = 'words with 3'; int mynum1 = atoi(mystr1); int mynum2 = atoi(mystr2); int mynum3 = atoi(mystr3); int mynum4 = atoi(mystr4); cout << 'atoi('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'atoi('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'atoi('' << mystr3 << '') is ' << mynum3 << '
'; cout << 'atoi('' << mystr4 << '') is ' << mynum4 << '
'; }
Resultado:
perguntas e respostas da entrevista líquida para caloiros
atoi (“24”) é 24
atoi (“3.142”) é 3
atoi ('23446 com char') é 23446
atoi ('palavras com 3') é 0
Conforme mostrado no programa acima, a função atoi pega uma string de byte como um argumento e a converte em um valor inteiro. Os espaços em branco ou quaisquer outros caracteres são descartados. Se o valor convertido estiver fora do intervalo, 0 será retornado.
String para dobrar usando stod ()
Protótipo de função: stod (const std :: string & str, std :: size_t * pos = 0);
Parâmetro (s):
str => String para converter
pos => Endereço de um inteiro para armazenar o número de caracteres processados; padrão = 0
Valor de retorno: Valor duplo equivalente à string especificada.
Exceções:
std :: invalid_argument => Se nenhuma conversão pode ser realizada.
std :: out_of_range => Se o valor convertido estiver fora do intervalo do tipo de resultado.
Descrição: Esta função converte uma string em um valor de ponto flutuante. A função stod () descarta quaisquer espaços em branco até que um caractere diferente de espaço em branco seja encontrado e, em seguida, pega os caracteres um por um para formar uma representação de número de ponto flutuante válida e converte-o em ponto flutuante.
Vamos ver um exemplo demonstrando essa função.
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; double mynum1 = stod(mystr1); double mynum2 = stod(mystr2); double mynum3 = stod(mystr3); cout << 'stod('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'stod('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'stod('' << mystr3 << '') is ' << mynum3 << '
'; }
Resultado:
stod (“24”) é 24
stod ('3.142') é 3.142
stod (“23446 com char”) é 23446
O programa acima demonstra o uso da função “stod”. A saída indica os valores duplos convertidos das strings especificadas.
Usando a classe stringstream
Usar a classe stringstream é a maneira mais fácil de converter valores de string em valores numéricos.
Estaremos aprendendo a classe stringstream em detalhes em nossos tutoriais subsequentes. A seguir, é fornecido um programa C ++ que demonstra a conversão de strings em valores numéricos.
#include #include using namespace std; int main() { string str = '2508'; stringstream sstream(str); int num = 0; sstream >> num; double dNum=0.0; string doublestr = '3.142'; stringstream dstream(doublestr); dstream >>dNum; cout << 'Value of num : ' << num< Resultado:
Valor de num: 2508
Valor de dNum: 3,142
No programa acima, vemos que declaramos um objeto string. Em seguida, declaramos um objeto stringstream e passamos a string para esse objeto, de modo que a string seja convertida em um objeto stringstream. Em seguida, este objeto stringstream é passado para um valor inteiro usando o operador ‘>>’ que converte o objeto stringstream em um inteiro.
Da mesma forma, também convertemos a string em double. Portanto, desde que o operador “>>” suporte o tipo de dados, podemos converter uma string em qualquer tipo de dados usando um objeto stringstream.
Converter int em string em C ++
Também podemos converter valores numéricos em valores de string. Existem dois métodos de conversão de valores numéricos em valores de string e os discutiremos a seguir.
Usando a função to_string ()
Protótipo de função: std :: string to_string (digite o valor);
Parâmetro (s): valor => valor numérico para converter
Valor de retorno: Valor da string contendo o valor convertido.
Exceção: pode lançar std :: bad_alloc
Descrição: Esta função to_string () converte o valor numérico passado como um argumento para o tipo de string e retorna a string.
Vamos ver um exemplo dessa função usando um programa C ++.
#include #include // used for string and to_string() using namespace std; int main() { int int_val = 20; float flt_val = 30.50; string str_int = to_string(int_val); string str_float = to_string(flt_val); cout << 'The string representation of integer : '; cout << str_int << endl; cout << 'The string representation of float : '; cout << str_float << endl; return 0; }
Resultado:
A representação da string do inteiro: 20 A representação da string do float: 30.500000
Qual das opções a seguir fornece um programa remoto que se parece com um aplicativo local?
Aqui temos duas variáveis, cada uma do tipo inteiro e float. Então chamamos o método to_string duas vezes com o argumento inteiro e float e convertemos ambos os valores em valores de string. Finalmente, exibimos os valores convertidos.
Observe que converter o valor de ponto flutuante em uma string pode gerar resultados inesperados, pois o número de dígitos significativos pode ser zero com o método to_string.
Usando a classe stringstream
Usando a classe stringstream, o stringstream primeiro declara um objeto de fluxo que insere um valor numérico como um fluxo no objeto. Em seguida, ele usa a função “str ()” para converter internamente um valor numérico em string.
Exemplo:
#include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; } #include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; }
Resultado:
A string formada a partir do inteiro é: 26082019
A corda formada por double é: 3.142
Nesta lista, definimos um número inteiro e um valor duplo. Então temos o objeto ostringstream, usando o qual convertemos o valor numérico para o objeto stringstream. Isso está usando o '<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Conclusão
Neste tutorial, discutimos funções de conversão que convertem uma string em tipos numéricos e tipos numéricos de volta em uma string. Vimos as funções e exemplos das funções stoi (), stod (), atoi (), to_string () em detalhes. Também discutimos algumas das funções e métodos da classe stringstream que nos ajudam a fazer as conversões mencionadas.
Leitura recomendada = >> Converter String em Inteiro em Java e Métodos para converter Int em String em Java
Em nosso próximo tutorial, aprenderemos funções de conversão para tipos de dados de caracteres.
=> Verifique os tutoriais detalhados de treinamento C ++ aqui.
Leitura recomendada
- Funções de string Python
- Funções de conversão de caracteres C ++: char para int, char para string
- Tutorial Java String com String Buffer e String Builder
- Funções de string em C ++: getline, substring, comprimento de string e mais
- C # Convert String To Int usando os métodos Parse, Convert e TryParse
- Funções VBScript String: funções VBScript inStr, Replace, Mid e Trim
- Tutorial de divisão de string em Python
- Tutorial de string C # - Métodos de string com exemplos de código