Функция strtod
Функция strtod преобразует строку в число
типа double. В первый параметр мы передаём
указатель на строку, которую нужно преобразовать,
а во второй - указатель на указатель, в который
будет записан адрес первого символа, следующего
за числом. Если второй параметр равен nullptr,
то он игнорируется. Функция пропускает ведущие
пробельные символы, затем считывает число в формате
с плавающей точкой и возвращает его как значение
типа double. Если преобразование невозможно,
функция возвращает 0.0.
Синтаксис
#include <cstdlib>
double strtod(const char* str, char** endptr);
Пример
Давайте преобразуем строку "123.45" в число
типа double и выведем результат:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
const char* str = "123.45";
double res = strtod(str, nullptr);
cout << res << endl;
return 0;
}
Результат выполнения кода:
123.45
Пример
Давайте преобразуем строку "abcde", которая
не содержит числа, и посмотрим на результат:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
const char* str = "abcde";
double res = strtod(str, nullptr);
cout << res << endl;
return 0;
}
Результат выполнения кода:
0
Пример
Давайте используем второй параметр, чтобы узнать, на каком символе остановилось преобразование:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
const char* str = "123.45abcde";
char* endptr;
double res = strtod(str, &endptr);
cout << res << endl;
cout << endptr << endl;
return 0;
}
Результат выполнения кода:
123.45
"abcde"