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