Stoll C ++

Stoll C ++

A conversão de um tipo de dados em outro é necessária para muitos propósitos diferentes. E, se você tiver algumas funções internas úteis disponíveis, poderá converter facilmente dados de um tipo para outro. A linguagem de programação C ++ oferece uma lista de várias funções internas que podem ser usadas para conversões de tipo de dados. Este artigo foi projetado para aprender uma dessas funções de conversão. Aqui, ilustraremos o funcionamento da função Stoll da linguagem C ++.

O que é a função Stoll na linguagem de programação C ++?

A função Stoll é uma função interna C ++ fornecida pela Biblioteca Padrão de C ++ para converter uma string em um longo Int. Ele pega a string de entrada, calcula seu valor longo longo e retorna o valor calculado. Ele define o ponteiro no primeiro personagem da sequência, iterando através de cada personagem incrementando por um e alcançando o último personagem.

Sintaxe da função Stoll

A sintaxe do Stoll é a seguinte:

A função Stoll leva três parâmetros: string, índice e base. A sequência de entrada a ser transformada em um valor inteiro está contida no parâmetro "string". O parâmetro "índice" é um ponteiro para um objeto usado para rastrear a posição do próximo personagem. Pode ser um ponteiro nulo quando não for necessário. O valor base em que a string será analisada é armazenada no parâmetro final, chamado "base". Por padrão, o valor base é 10 e o valor base 0 determina a base pelo formato da string. Retorna o valor inteiro convertido na forma de long long int. Vamos entender o funcionamento do Stoll com os exemplos fornecidos abaixo:

Exemplo 1

O primeiro exemplo da função Stoll ilustrará a função básica da função Stoll. Aqui, um programa simples e fácil é fornecido para que você não tenha problemas para entender a função. Veja o código a seguir e entenda as linhas de código passo a passo:

#incluir
usando namespace std;
int main ()

Longo Int D, H, B;
String DEC = "123456";
string hex = "ffffff";
string bin = "101010";
d = stoll (dez, nullptr, 10);
h = stoll (hexadecimal, nullptr, 16);
b = stoll (bin, nullptr, 2);
cout << dec<<" **Decimal conversion** " << d <cout <cout << bin<<" **Binary conversion** " << b <retornar 0;

O programa começa com o arquivo de cabeçalho, que inclui todos os utilitários de biblioteca padrão necessários para um programa geral C ++. O “usando namespace std;” Permite incluir a função de entrada e saída padrão para executar uma determinada tarefa. Todo o programa está escrito na função principal.

Aqui, as variáveis ​​são declaradas e os valores são atribuídos a eles. As cordas que precisam ser transformadas são armazenadas nas variáveis ​​"DEC", "Hex" e "Bin". As variáveis ​​d, h e b reterão a corda convertida na forma de longa intenção.

Aqui, os parâmetros são passados ​​para a função Stoll. Para converter a corda decimal, a base 10 é fornecida. Para converter a corda hexadecimal, é fornecida a base 16 e, para converter a corda binária, a base 2 é fornecida.

Usando a instrução Cout, cada string e seus valores inteiros convertidos são impressos. A declaração de retorno 0 é adicionada no final do programa para garantir que a execução tenha sido feita com sucesso. É uma declaração opcional que pode ser ignorada.

Vamos revisar cada string convertida na saída fornecida abaixo:

Exemplo 2

Vamos testar a função Stoll com entrada inválida. O compilador lança um erro ou levanta uma exceção se a entrada inválida for fornecida à função Stoll. Se a execução não puder ser realizada, o compilador lançará uma exceção de argumento inválida. Se a conversão não puder ser realizada devido ao valor de entrada fora do alcance, o compilador lançará a exceção fora do alcance. Vamos entender todo esse cenário com um exemplo simples:

#incluir
usando namespace std;
int main ()
string str = "ABCD!~ $#@de ";
tentar
cout << stoll(str) << "\n";

Catch (const std :: invalid_argument)
Cerr << "Invalid argument" << "\n";

retornar 0;

Uma string que contém um caractere especial é fornecida como uma string de entrada para converter usando a função Stoll. A função Stoll não pode converter os caracteres especiais dos dados gerais de string. Isso levanta uma exceção de argumento inválida.

A conversão do Stoll é realizada no bloco "tente". Se a conversão não puder ser feita, a exceção de "argumento inválido" no bloco "Catch" será levantado.

Aqui está a seguinte saída:

No caso de uma sequência de entrada inválida, o Stoll não pode desempenhar sua função e lançará uma exceção.

Exemplo 3

Agora, vamos testar a função Stoll com uma mistura de uma sequência de entrada válida e inválida. Aqui, forneceremos uma combinação de seqüências válidas e inválidas para a função Stoll para ver o funcionamento da função Stoll.

#incluir
usando namespace std;
int main ()

String str = “123456789 0xffff 010”;
String :: size_type sz = 0;
enquanto (!str.vazio())
longo longo ll = stoll (str, & sz, 0);
std :: cout << str.substr(0,sz) << “ converted as “ << ll << '\n';
str = str.substr (SZ);

retornar 0;

A sequência contém três elementos separados pelo espaço. Vamos quebrar cada elemento em uma corda separada e converter cada um deles por um. A string é iterada e cada elemento é convertido de forma independente usando um loop "while". A função substring () divide a string em diferentes elementos ou partes. A base 0 é fornecida para que o compilador determine a base da conversão automaticamente, verificando o formato dos dados de entrada.

O primeiro elemento, "123456789", é um número decimal, por isso será convertido em um número decimal usando a base 10. A conversão decimal de "123456789" deve ser "123456789". O segundo elemento, "0xffff", é uma mistura de números inteiros, string e hexadecimal. A função Stoll ignora os caracteres inválidos na string e calculará a conversão da string válida.

Por exemplo, o "0x" na string será ignorado e a conversão de "ffff" será realizada. A função Stoll determinará automaticamente a base de conversão do formato de dados. O "FFFF" é um número inteiro na série hexadecimal, então a função Stoll usará a base 16 para conversão de string. E o último elemento, "010", é novamente um número inteiro, então a função Stoll usará 10 para converter a sequência decimal em um número inteiro decimal. A sequência convertida "010" deve ser um número inteiro "010". Vamos ver a saída fornecida abaixo:

Conclusão

Tivemos uma rápida visão geral da função Stoll. Com a ajuda de exemplos, aprendemos o uso da função Stoll na linguagem de programação C ++. Três exemplos únicos, juntamente com sua explicação de código, são fornecidos neste guia.