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

Funkcia Stol V C

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

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

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

#include <строка>

#include

инт главный ( )

{

стандарт :: нить декабрь знак равно '123456789' ;
стандарт :: нить шестигранник знак равно 'a2bf3c' ;
стандарт :: нить :: тип_размера размер ;
длинная лидек знак равно стандарт :: стол ( дек, & размер ) ;
длинная лигекс знак равно стандарт :: стол ( шестигранник, nullptr , 16 ) ;
стандарт :: cout << 'Введите десятичную строку' << декабрь << ' преобразовано в длинное целое ' << лидек << ' \n ' ;
стандарт :: cout << 'Введите шестнадцатеричную строку' << шестигранник << ' преобразовано в длинное целое ' << лигекс << ' \n ' ;
возвращаться 0 ;


}

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

( A2BF3C ) ₁₆ знак равно ( 10 × 16 ) + ( два × 16 ) + ( одиннадцать × 16 ³ ) + ( пятнадцать × 16 ² ) + ( 3 × 16 ¹ ) + ( 12 × 16 ) знак равно ( 10665788 ) ₁₀

Пример №2

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

( 1010110110 ) знак равно ( 1 × два ) + ( 0 × два ) + ( 1 × два ) + ( 0 × два ) + ( 1 × два ) + ( 1 × два ) + ( 0 × два ³ ) + ( 1 × два ² ) + ( 1 × два ¹ ) + ( 0 × два ) знак равно ( 694 ) ₁₀ #include

#include <строка>

#include

инт главный ( )

{

стандарт :: нить мусорное ведро знак равно '1010110110' ;
стандарт :: нить :: тип_размера размер ;
длинная либин знак равно стандарт :: стол ( мусорное ведро, & размер, два ) ;
стандарт :: cout << 'Введите двоичную строку' << мусорное ведро << ' преобразовано в длинное целое ' << либин << ' \n ' ;
возвращаться 0 ;


}

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

Пример №3

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

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

#include <иопоток>

#include <строка>

#include

инт главный ( )

{

станд. :: нить чр знак равно 'abcdefgh' ;

станд. :: нить :: тип_размера размер ;
длинная ул знак равно станд. :: стол ( чр, nullptr , 0 ) ;
станд. :: cout << 'Введите строку символов' << чр << ' преобразовано в длинное целое ' << ул << ' \n ' ;
возвращаться 0 ;


}

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

Пример №4

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

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

#include <иопоток>

#include <строка>

#include

инт главный ( )

{

станд. :: нить чр знак равно '123xf25' ;
станд. :: нить :: тип_размера размер ;
длинная ул знак равно станд. :: стол ( чр, nullptr , 0 ) ;
станд. :: cout << 'Строка ввода ' << чр << ' преобразовано в длинное целое ' << ул << ' \n ' ;
возвращаться 0 ;


}

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

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

Вывод

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