Функция Stol() в C++

Функция Vector Insert () в C++ Программирование и разработка

C++ — один из самых популярных и старых языков программирования, используемых для разработки высокопроизводительных приложений. Он используется высококвалифицированными программистами и начинающими разработчиками. Он в основном используется в разработке игр и является идеальным вариантом для разработки операционных систем. При написании кода на языке C++ вы можете столкнуться с преобразованием данных из одного типа в другой. В этой статье вы научитесь преобразовывать строку в длинное целое. Довольно сложно преобразовать строку в любой другой формат. Однако язык программирования C++ предоставляет быстрый и эффективный способ преобразования строк в целые числа.

Функция stol в C++

stol — это встроенная функция C++, представленная в стандартной библиотеке. Он преобразует строки в длинные целые числа. Он преобразует содержимое строки в целое число по указанному основанию и возвращает длинное целое значение. Он принимает три параметра: один — входная строка, второй — параметр объекта, а третий — числовая база. Синтаксис функции stol приведен ниже, посмотрите:

Синтаксис функции stol приведен ниже, посмотрите

Функция stol принимает три параметра: input_string, size и base. «input_string» представляет входную строку, которую необходимо преобразовать в длинное целое число.

Параметр size представляет объект типа size_t, который содержит следующую позицию символа во входной строке после числового значения. Это может быть нулевой указатель, если его не требуется использовать.

Третий параметр, «базовый», представляет базу, в которой нужно интерпретировать строку. Например, если указано основание «2», строка будет интерпретироваться как целое число с основанием 2. Значение базового параметра по умолчанию равно 10, и если указано значение 0, то базовое значение будет определяться форматом в последовательности. Функция stol возвращает длинное целое число, представляющее значение int заданной строки.

Теперь давайте рассмотрим несколько примеров, чтобы понять, как работает функция stol в C++.

Пример 1

В этом примере мы предоставим десятичные и шестнадцатеричные строки, чтобы проверить, как функция stol преобразует их в десятичные и шестнадцатеричные целые числа.

«dec = 123456789» — это десятичная строка, которая преобразуется в длинное целое с помощью функции stol(dec,&size). Обратите внимание, что основание не предоставляется в функции в качестве входного параметра, в результате чего используется основание по умолчанию 10 для преобразования строки в десятичное число. Однако для преобразования строки из шестнадцатеричного числа в десятичное число в качестве входного параметра stol(hex, nullptr, 16) предоставляется основание 16. Как мы знаем, основание 16 представляет собой шестнадцатеричное число.

#include <iostream>

#include <string>

#include <stdlib.h>

int main ()

{

std::string dec = «123456789»;
std::string hex = «a2bf3c»;
std::string::size_type size;
long lidec = std::stol (dec,&size);
long lihex = std::stol (hex,nullptr,16);
std::cout << «Input decimal string «<<dec << » converted to long int « << lidec << \n;
std::cout << «Input hexadecimal string «<<hex <<  » converted to long int « << lihex << \n;
return 0;

}

Вот следующий вывод. Обратите внимание, что десятичная строка «123456789» преобразуется в десятичное длинное целое число «123456789». В то время как шестнадцатеричная строка «a2bf3c» преобразуется в шестнадцатеричное число «10665788». Вот необходимые шаги, которые вы можете выполнить, чтобы узнать, как преобразование выполняется функцией stol:

(A2BF3C)₁₆ = (10 × 16) + (2 × 16) + (11 × 16³) + (15 × 16²) + (3 × 16¹) + (12 × 16) = (10665788)₁₀

Обратите внимание, что десятичная строка «123456789»

Пример 2

В этом примере мы преобразуем двоичное число с помощью функции stol. Давайте посмотрим на код ниже и поймем, как он работает. «1010110110» задается в качестве входной строки, а основание 2 предоставляется в качестве входного базового параметра stol(bin,&size, 2), представляющего число в двоичном формате. Функция stol преобразует двоичное число в десятичное, выполнив следующие действия:

(1010110110)₂ = (1 × 2) + (0 × 2) + (1 × 2) + (0 × 2) + (1 × 2) + (1 × 2) + (0 × 2³) + (1 × 2²) + (1 × 2¹) + (0 × 2) = (694)₁₀

#include <iostream>

#include <string>

#include <stdlib.h>

int main ()

{

std::string bin = «1010110110»;
std::string::size_type size;
long libin = std::stol (bin,&size,2);
std::cout << «Input binary string «<<bin << » converted to long int « << libin << \n;
return 0;

}

Как видите, функция stol вернула тот же результат, что и обычный процесс преобразования двоичного кода в десятичный.

Как видите, функция stol вернула тот же результат

Пример 3

В этом примере мы увидим, что произойдет, если мы протестируем функцию stol с недопустимым вводом. Строка из нескольких символов будет предоставлена ​​функции stol, а 0 будет предоставлено в качестве базового значения, чтобы функция автоматически определяла базу строки. Вот код:

В качестве входной строки предоставляется набор символов, который не определяется какими-либо базовыми значениями, т. е. 10, 16, 2 и т. д., поэтому функция вернет значение ошибки.

#include <iostream>

#include <string>

#include <stdlib.h>

int main ()

{

std::string chr = «abcdefgh»;

std::string::size_type size;
long str = std::stol (chr,nullptr,0);
std::cout << «Input character string «<<chr << » converted to long int « << str << \n;
return 0;

}

См. вывод ниже. Обратите внимание, что компилятор вызвал исключение «invalid_argument», поскольку функция не поддерживает строки, которые не могут быть определены ни с каким базовым значением.

Обратите внимание, что компилятор вызвал исключение «invalid_argument

Пример 4

В этом примере мы предоставим комбинацию допустимого и недопустимого ввода, чтобы увидеть результат функции stol().

Входная строка представляет собой комбинацию допустимых и недопустимых символов «123xf25». «0» предоставляется в качестве базы ввода, поэтому функция автоматически определяет базу входной строки на основе типа символов.

#include <iostream>

#include <string>

#include <stdlib.h>

int main ()

{

std::string chr = «123xf25»;
std::string::size_type size;
long str = std::stol (chr,nullptr,0);
std::cout << «Input string «<<chr << » converted to long int « << str << \n;
return 0;

}

Вот вывод, который показывает работу функции stol с комбинацией допустимого и недопустимого ввода:

Вот вывод, который показывает работу функции stol с комбинацией

Обратите внимание, что функция преобразовала «123» в десятичное число «123» и отбросила остальную часть строки, так как получила недопустимый ввод «x». Строка после символа «x» не преобразуется функцией stol, возвращая только первые символы строки длиной int.

Заключение

В этом посте мы рассмотрели функцию stol языка программирования C++. С помощью нескольких полезных и простых примеров мы узнали, как функция stol работает с разными типами входных данных. Функция stol принимает три параметра: входную строку, которую необходимо преобразовать, параметр размера, представляющий позицию функции в строке, и базовое значение, представляющее основу входной строки. Он возвращает длинное целое значение входной строки.

Читайте также:  Программирование и кодирование. В чём разница?
Оцените статью
bestprogrammer.ru
Добавить комментарий

  1. BABA

    На самом деле stoi() работает достаточно медленно!
    Вместо этого я рекомендую использовать отнимать из 2-кода ноль:
    string a = «2»;
    int b;
    b = a[0] — ‘0’;
    std :: cout << b;
    return 0;
    Единственный минус — это то, что придётся с каждым элементом проделывать это.
    Но во стольном годная вещь, советую!

    Ответить