Функция strtol
Функция strtol преобразует строку в длинное целое число
типа long. В первый параметр мы передаем строку для
преобразования, во второй - указатель на переменную, в которую
будет записан адрес первого символа, следующего за числом
(можно передать nullptr, если эта информация не нужна),
а в третий - основание системы счисления (от 2 до
36). Если основание равно 0, система счисления
определяется автоматически: по префиксу "0x" - шестнадцатеричная,
по префиксу "0" - восьмеричная, иначе десятичная.
Синтаксис
long strtol(const char* str, char** endptr, int base)
Пример
Давайте преобразуем строку "12345" в число типа
long в десятичной системе счисления:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
const char* str = "12345";
long res = strtol(str, nullptr, 10);
cout << res << endl;
return 0;
}
Результат выполнения кода:
12345
Пример
Давайте преобразуем строку "1a" в шестнадцатеричной
системе счисления и получим позицию символа, на котором
остановился разбор:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
const char* str = "1a";
char* end;
long res = strtol(str, &end, 16);
cout << res << endl;
cout << "Stopped at: " << end << endl;
return 0;
}
Результат выполнения кода:
26
"Stopped at:"
Пример
Давайте преобразуем строку "0x1F" с автоматическим
определением системы счисления по префиксу:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
const char* str = "0x1F";
long res = strtol(str, nullptr, 0);
cout << res << endl;
return 0;
}
Результат выполнения кода:
31