Neste artigo, você aprenderá sobre a função std::stol em C++ com sua sintaxe e exemplos.
O que é std::stol()?
O Biblioteca de modelos padrão (STL) em C++ inclui o std::stol() função, que é feita especificamente para converter strings para inteiros longos . Esta função é especialmente útil ao trabalhar com entradas do usuário ou ler dados de fontes externas - onde a entrada geralmente é fornecida em formato de string. Ele retorna o inteiro longo equivalente após receber uma string como entrada. Uma exceção do tipo std::invalid_argument ou std::out_of_range será lançada se a conversão não for possível ou se a string de entrada contiver caracteres que não fazem parte de um número válido.
Sintaxe:
Possui a seguinte sintaxe:
longo std::stol(const std::string& str, size_t* pos = 0, int base = 10);
estr: O texto que precisa ser alterado para um número inteiro longo.
Pos: O índice do primeiro caractere não convertido da string, armazenado como um ponteiro para um objeto size_t. Se não for necessário, esse parâmetro opcional poderá ser definido como nullptr.
meucricketlive
base: A base numérica da conversão. Dez é o padrão.
Valor de retorno: O valor numérico que foi analisado na sequência de entrada é retornado pela função como um número inteiro longo.
Exceções: A função lança uma exceção se a conversão não puder ser concluída ou se os caracteres na string de entrada forem inválidos. Se nenhuma conversão puder ser feita, as possíveis exceções são std::argumento_inválido e std::out_of_range se o valor convertido for maior que o intervalo representável por muito tempo.
Casos de uso:
std::stol() é útil para transformar a entrada numérica recebida dos usuários em formato de string em um tipo numérico para que possa ser processada posteriormente.
Leitura de dados numéricos em arquivos contendo strings como representação dos dados.
A validação de dados envolve a confirmação de que as entradas do usuário representam números longos com precisão, validando-os e verificando-os.
Exemplo de Programa 1:
Vamos dar um exemplo para ilustrar o uso de função std::stol em C++.
#include #include int main() { std::string numStr = '12345'; try { long result = std::stol(numStr); std::cout << 'Converted value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Invalid argument: ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Out of range: ' << e.what() << std::endl; } return 0; }
Saída:
Explicação:
- Uma variável de string chamada numStr é inicializado com o valor '12345' no início do programa.
- O código passa para um bloco try, sinalizando que tentará executar as instruções contidas nele. Possíveis exceções são tratadas aqui.
- O programa tenta usar std::stol() para transformar a string numStr em um inteiro longo dentro do bloco try.
- O resultado é mantido na variável resultado se a conversão for bem-sucedida.
- O número convertido com sucesso é então impresso na saída padrão do programa.
- Um dos blocos catch trata de quaisquer exceções que surjam durante a conversão.
- Uma mensagem de erro informando que o argumento é inválido será impressa se a exceção for do tipo std::invalid_argument.
- Uma mensagem de erro informando que o resultado da conversão está fora do intervalo válido será impressa se a exceção for do tipo std::out_of_range.
- O programa retorna 0 ao sistema operacional, significando execução bem-sucedida, e a função principal termina.
Em resumo, o código tenta usar o std::stol() função dentro de um bloco try para converter a string '12345' em um número inteiro longo. O resultado será impresso se a conversão for bem-sucedida. Ele captura exceções e imprime a mensagem de erro relevante caso surja uma (seja por causa de um argumento incorreto ou porque o resultado está fora do intervalo).
Finalmente, o programa retorna 0, significando conclusão bem-sucedida.
Exemplo de programa 2:
Vamos dar outro exemplo para ilustrar o uso de função std::stol em C++.
#include #include int main() { std::cout << 'Enter numeric strings to convert to long integers (type 'exit' to end): '; while (true) { std::string userInput; std::cout <> userInput; if (userInput == 'exit') { std::cout << 'Exiting program. Goodbye! '; break; } try { long result = std::stol(userInput); std::cout << 'Converted Value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Error: Invalid argument in input '' << userInput << '': ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Error: Out of range for input '' << userInput << '': ' << e.what() << std::endl; } } return 0; }
Saída:
Explicação:
- Neste exemplo, o usuário é solicitado a inserir valores de string a serem convertidos.
- O aplicativo continuará aceitando a entrada do usuário até que ele insira 'saída' usando um loop while.
- Entrando 'saída' faz com que este programa imprima uma mensagem de despedida e encerre o loop.
- Se não, ele tenta usar std::stol para converter a entrada em um longo.
- O valor convertido será impresso se a conversão for bem-sucedida.
- Ele captura exceções (argumentos inválidos, fora do intervalo), imprime uma mensagem de erro e continua.
- Enquanto espera pela nova entrada do usuário, o loop passa para a próxima iteração.