Функция stoul
Функция stoul преобразует строку в беззнаковое целое число
типа unsigned long. В первый параметр мы передаем строку,
которую необходимо преобразовать. Второй параметр задает позицию
в строке, с которой следует начинать разбор (по умолчанию 0).
Третий параметр определяет систему счисления (по умолчанию 10).
Если преобразование не удалось, функция выбрасывает исключение
std::invalid_argument или std::out_of_range.
Синтаксис
unsigned long stoul(const string& str, size_t* pos = nullptr, int base = 10);
unsigned long stoul(const wstring& str, size_t* pos = nullptr, int base = 10);
Пример
Давайте преобразуем строку "12345" в число и выведем результат:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "12345";
unsigned long res = stoul(str);
cout << res << endl;
return 0;
}
Результат выполнения кода:
12345
Пример
Давайте преобразуем строку "ff" в число, используя
шестнадцатеричную систему счисления (основание 16):
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "ff";
unsigned long res = stoul(str, nullptr, 16);
cout << res << endl;
return 0;
}
Результат выполнения кода:
255
Пример
Давайте преобразуем строку "777" в число, используя
восьмеричную систему счисления (основание 8):
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "777";
unsigned long res = stoul(str, nullptr, 8);
cout << res << endl;
return 0;
}
Результат выполнения кода:
511
Пример
Давайте получим позицию, на которой остановился разбор строки
"123abc":
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "123abc";
size_t pos;
unsigned long res = stoul(str, &pos);
cout << "Number: " << res << endl;
cout << "Stop position: " << pos << endl;
return 0;
}
Результат выполнения кода:
"Number: 123"
"Stop position: 3"