«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как преобразовать строки в двойные значения в C++: простое руководство по использованию `std::istringstream` и `std::stod`

Как преобразовать строки в двойные значения в C++: простое руководство по использованию `std::istringstream` и `std::stod`

Опубликовано 16 ноября 2024 г.
Просматривать:115

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

Преобразование строк в числа типа Double в C.

В C преобразование строки в число типа Double можно выполнить с помощью функций std::istringstream и 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;
}

Вот как работает эта функция:

  1. Создайте объект std::istringstream iss из входной строки s.
  2. Используйте оператор >> для извлечения двойное значение из iss.
  3. Если извлечение прошло успешно, верните двойное значение.
  4. Если извлечение не удалось (например, строка не является числовой), верните 0.

Обратите внимание, что эта функция не может полностью отличить все разрешенные строковые представления нуля от нечисловых строк. Например, все следующие строки считаются нулевыми:

"0"
"0."
"0.0"

Вот несколько тестовых примеров, демонстрирующих использование функции 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;
}
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3