Функция stod
Функция stod преобразует строку в число
типа double. В первый параметр мы передаём
строку, которую нужно преобразовать, а во второй
необязательный параметр - указатель на переменную
типа size_t, в которую будет записана позиция
первого символа, следующего после числа. Функция
пропускает ведущие пробельные символы и читает
число до первого символа, который не может быть
частью числа.
Если преобразование невозможно, функция выбрасывает
исключение std::invalid_argument. Если
полученное число выходит за пределы диапазона типа
double, выбрасывается исключение
std::out_of_range.
Синтаксис
double stod(const string& str, size_t* pos = 0);
Пример
Давайте преобразуем строку "123.45" в число
типа double и выведем результат:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "123.45";
double res = stod(str);
cout << res << endl;
return 0;
}
Результат выполнения кода:
123.45
Пример
Давайте преобразуем строку "3.14abc" и
узнаем позицию, на которой остановилось чтение
числа:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "3.14abc";
size_t pos;
double res = stod(str, &pos);
cout << res << endl;
cout << pos << endl;
return 0;
}
Результат выполнения кода:
3.14
4
Пример
Давайте попробуем преобразовать строку
"abc", которая не содержит числа, и
обработаем исключение:
#include <iostream>
#include <string>
#include <stdexcept>
using namespace std;
int main()
{
string str = "abc";
try
{
double res = stod(str);
cout << res << endl;
}
catch (const invalid_argument& e)
{
cout << "invalid argument" << endl;
}
return 0;
}
Результат выполнения кода:
"invalid argument"