"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como converter strings em duplos em C++: um guia simples usando `std::istringstream` e `std::stod`

Como converter strings em duplos em C++: um guia simples usando `std::istringstream` e `std::stod`

Publicado em 2024-11-16
Navegar:879

How to Convert Strings to Doubles in C  : A Simple Guide Using `std::istringstream` and `std::stod`

Convertendo Strings em Doubles em C

Em C , a conversão de uma string em um double pode ser obtida usando as funções std::istringstream e std::stod.

#include 

double string_to_double(const std::string& s) {
  std::istringstream iss(s);
  double x;
  if (!(iss >> x)) {
    return 0;  // Return 0 for non-numerical strings
  }
  return x;
}

Veja como esta função funciona:

  1. Crie um objeto std::istringstream a partir da string de entrada s.
  2. Use o operador >> para extrair um valor duplo de iss.
  3. Se a extração for bem-sucedida, retorne o valor duplo.
  4. Se a extração falhar (por exemplo, a string não é numérica), retorne 0.

Observe que esta função não pode distinguir completamente todas as representações de string permitidas de zero de strings não numéricas. Por exemplo, ele considera todas as strings a seguir como zero:

"0"
"0."
"0.0"

Aqui estão alguns casos de teste para demonstrar o uso da função string_to_double:

#include 

int main() {
  assert(0.5 == string_to_double("0.5"));
  assert(0.5 == string_to_double("0.5 "));
  assert(0.5 == string_to_double(" 0.5"));
  assert(0.5 == string_to_double("0.5a"));

  assert(0 == string_to_double("0"));
  assert(0 == string_to_double("0."));
  assert(0 == string_to_double("0.0"));
  assert(0 == string_to_double("foobar"));

  return 0;
}
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3