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