Функция from_chars
Функция from_chars преобразует
последовательность символов в число.
В отличие от stoi и подобных функций,
она не использует локаль, не бросает исключений
и не выделяет динамическую память.
В первый параметр мы передаем указатель на
начало последовательности символов, во второй -
указатель на ее конец, а в третий - ссылку
на переменную, куда будет записан результат.
Синтаксис
from_chars(first, last, value, [base])
Пример
Давайте преобразуем строку "12345"
в число типа int:
#include <iostream>
#include <charconv>
#include <string>
using namespace std;
int main()
{
string str = "12345";
int res = 0;
from_chars(str.data(), str.data() + str.size(), res);
cout << res << endl;
return 0;
}
Результат выполнения кода:
12345
Пример
Давайте преобразуем строку "abcde"
в число типа double.
Функция вернет объект from_chars_result,
в котором мы можем проверить код ошибки:
#include <iostream>
#include <charconv>
#include <string>
#include <system_error>
using namespace std;
int main()
{
string str = "abcde";
double res = 0;
auto result = from_chars(str.data(), str.data() + str.size(), res);
if (result.ec == errc())
{
cout << res << endl;
}
else
{
cout << "error" << endl;
}
return 0;
}
Результат выполнения кода:
"error"
Пример
Давайте преобразуем число 255,
записанное в шестнадцатеричной системе
счисления, в десятичное число,
указав основание 16:
#include <iostream>
#include <charconv>
#include <string>
using namespace std;
int main()
{
string str = "ff";
int res = 0;
from_chars(str.data(), str.data() + str.size(), res, 16);
cout << res << endl;
return 0;
}
Результат выполнения кода:
255