logo

função std::stol em C++

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:

    Processamento de entrada pelos usuários:

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.

    Arquivo de entrada/saída:

Leitura de dados numéricos em arquivos contendo strings como representação dos dados.

    Data de validade:

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:

função std::stol em C++

Explicação:

    Inicialização:
    • Uma variável de string chamada numStr é inicializado com o valor '12345' no início do programa.
    Tente bloquear:
    • 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.
    Tentativa de conversão:
    • O programa tenta usar std::stol() para transformar a string numStr em um inteiro longo dentro do bloco try.
    Conversão Efetiva:
    • O resultado é mantido na variável resultado se a conversão for bem-sucedida.
    Valor convertido de saída:
    • O número convertido com sucesso é então impresso na saída padrão do programa.
    Tratando Exceções:
    • Um dos blocos catch trata de quaisquer exceções que surjam durante a conversão.
    Exceção para captura de argumento inválido:
    • Uma mensagem de erro informando que o argumento é inválido será impressa se a exceção for do tipo std::invalid_argument.
    Exceção para Captura Fora de Alcance:
    • 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.
    Política de devolução:
    • 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:

Função std::stol em C++

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.
  • Padrão::cin é usado dentro do loop para ler a entrada do usuário.
  • 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.