Как перевести строку в int
Как преобразовать строку в int в C++?
Объявление типа данных переменной является обязательным в C ++, потому что это строго типизированный язык. Иногда для целей программирования требуется изменить тип данных переменной с одного типа на другой, например, строку на int или int на строку. Этот тип преобразования может быть выполнен в C ++ с использованием различных типов встроенных функций. В этом руководстве были показаны различные способы преобразования строки в int в C ++.
Предварительные условия:
Прежде чем проверять примеры этого руководства, вы должны проверить, установлен ли компилятор g ++ в системе. Если вы используете Visual Studio Code, установите необходимые расширения для компиляции исходного кода C ++ и создания исполняемого кода. Здесь приложение Visual Studio Code было использовано для компиляции и выполнения кода C ++.
Использование функции atoi ()
Функция atoi () используется для возврата числа путем преобразования строки, созданной массивом символов, в целое число. Для использования этой функции необходимо включить заголовочный файл cstdlib.
Синтаксис:
Создайте файл C ++ со следующим кодом для преобразования строки чисел в целое число с помощью функции atoi (). Здесь функция strcpy () использовалась для преобразования строки в массив символов. Значение входной строки преобразовано в массив символов, и преобразованное значение было использовано в функции atoi () для получения целочисленного значения строки. Затем преобразованное целое число будет напечатано, если преобразование выполнено правильно.
//Include for printing the output
//Include for using the atoi() function
//Include for using the strcpy function
//Declare a string variable
std :: string strData ;
//Declare a chracter array variable
charstrarr [ 50 ] ;
//Take a number from the user
std :: cout <> strData ;
int number = std :: atoi ( strarr ) ;
//Print the number
std :: cout «The converted number is = « number ‘ \n ‘ ;
return0 ;
>
Следующие выходные данные появятся, если 6090 будет принято в качестве входных данных после выполнения кода.
Использование функции stoi ()
Функция atoi () используется для возврата числа путем преобразования строкового значения в целое число. Первый аргумент этой функции является обязательным, а остальные аргументы — необязательными. Синтаксис этой функции приведен ниже.
Синтаксис:
Создайте файл C ++ со следующим кодом для преобразования строки в целое число с помощью функции stoi (). После выполнения кода входное значение, полученное от пользователя, будет преобразовано в число и распечатано, если входное значение является допустимым числом. Если входное значение содержит какой-либо алфавитный или нечисловой символ, будет сгенерировано исключение invalid_argument и будет напечатано сообщение об ошибке.
//Include for printing the output
intmain ( )
<
//Declare a string variable
std :: string strData ;
//Take a number from the user
std :: cout <> strData ;
//Convert the string into number with error handling
try <
//Convert the string into integer
int number = std :: stoi ( strData ) ;
//Print the converted number
std :: cout «The converted number is = « number ‘ \n ‘ ;
>
//Handle error if invalid number is given
catch ( std :: invalid_argumentconst & e ) <
std :: cout «Input value is not a number. \n « ;
>
return0 ;
>
Следующий вывод появится, если после выполнения кода в качестве входных данных будет выбрано 4577.
Следующий вывод появится, если после выполнения кода будет принято приветствие в качестве ввода.
Использование строковых потоков
Использование функции istringstream () — еще один способ преобразовать строку в целое число с помощью оператора ’>>’. Создайте файл C ++ со следующим кодом для преобразования строковых данных в целое число с помощью функции istringstream (). Строковое значение чисел было присвоено строковой переменной в коде, который использовался в качестве значения аргумента функции istringstream (). Затем было напечатано преобразованное целочисленное значение.
//Include for printing the output
//Include for using the istringstream() function
intmain ( )
<
//Declare a string variable
std :: string strData = «12345» ;
//Declare an integer variable
intnumber ;
//Convert the string into the integer
std :: istringstream ( strData ) >> number ;
//Print the converted number
std :: cout «The converted number is = « number ‘ \n ‘ ;
return0 ;
>
После выполнения кода появится следующий вывод.
Используя функцию sscanf ()
Использование функции sscanf () — еще один способ преобразовать строку в целое число. Для использования этой функции необходимо включить заголовочный файл cstdio. Создайте файл C ++ со следующим кодом для преобразования строкового значения в целое число с помощью функции sscanf (). После выполнения скрипта у пользователя будет взято строковое значение. Если входное значение является допустимым числовым значением, то входное значение будет преобразовано в целое число и напечатано; в противном случае будет напечатано сообщение об ошибке.
//Include for printing the output
//Include for using the sscanf() function
intmain ( ) <
//Declare a string variable
std :: string strData ;
//Declare an integer variable
intnumber ;
Следующий вывод появится, если 78325 будет принят в качестве ввода после выполнения кода.
Использование цикла for
В следующем примере показано, как преобразовать строковое значение в целочисленное значение без использования какой-либо встроенной функции. Создайте файл C ++ со следующим кодом для преобразования строкового значения в целое число с помощью цикла for. Значение строки, число было назначено в переменный, которая была использована в » для » петли, чтобы преобразовать строку в целое число.
intmain ( )
<
//Declare a string variable
std :: string strData = «6000» ;
//Declare an integer variable
intnumber ;
//Convert the string into integer
for ( charchr : strData )
<
if ( chr >= ‘0’ && chr ‘9’ ) <
number = number * 10 + ( chr — ‘0’ ) ;
>
//Print the converted number
std :: cout «The converted number is = « number ‘ \n ‘ ;
return0 ;
>
Если после выполнения кода в качестве входных данных будет выбрано 6000, появится следующий вывод.
Заключение
В этом руководстве описаны пять различных способов преобразования строки в число с использованием простых примеров, помогающих читателям узнать, как преобразовать любую строку в целое число в программировании на C ++.
Функции преобразования строк в числовое значение
Комментарии
Каждая функция в семействе strtod преобразует строку, завершающуюся нуль-символом, в числовое значение. Доступные функции перечислены в следующей таблице.
| Функция | Описание |
|---|---|
| strtod | Преобразует строку в значение двойной точности с плавающей запятой |
| strtol | Преобразует строку в целочисленное значение типа long |
| strtoul | Преобразует строку в беззнаковое целочисленное значение типа long |
| _strtoi64 | Преобразует строку в 64-разрядное целое число типа __int64 |
| _strtoui64 | Преобразует строку в беззнаковое 64-разрядное целое число типа __int64 |
Если в момент вызова для предоставляемого пользователем указателя на символ конца преобразования не задано значение NULL, вместо него сохраняется указатель на символ, на котором остановилось сканирование. Если выполнить преобразование невозможно (не найдены допустимые цифры или указано недопустимое основание), по этому адресу сохраняется значение указателя на строку.
strtod ожидает строку следующего вида:
whitespace может содержать пробелы или символы табуляции, которые игнорируются; sign — это или плюс ( ), или минус ( ); и digits — одна или несколько десятичных цифр. Если перед символом основания системы счисления нет никаких цифр, то после него должна отображаться хотя бы одна цифра. За десятичными цифрами может следовать показатель степени, который состоит из вводной буквы (d, D, eили E) и, при необходимости, целого числа со знаком. Если не отображается ни экспоненциальная часть, ни символ основания системы счисления, то предполагается, что символ основания системы счисления следует за последней цифрой в строке. Первый символ, который не соответствует этой форме, останавливает сканирование.
Если значение аргумента основания лежит в диапазоне от 2 до 36, оно используется как основание системы счисления. Если он равен 0, то начальные символы, на которые ссылается указатель конца преобразования, используются для определения основания. Если первый символ равен 0, а второй символ не «x» или «X», то строка интерпретируется как восьмеричное целое число; в противном случае она интерпретируется как десятичное число. Если первый символ — 0, а второй символ равен x или X, строка интерпретируется как шестнадцатеричное целое число. Если первый символ — от 1 до 9, строка интерпретируется как десятичное целое число. Буквам от «а» до «z» (или от «А» до «Z») присваиваются значения от 10 до 35; допускаются только буквы с присвоенными значениями меньше base. strtoul и _strtoui64 допускают в качестве префикса знак плюса (+) или знак минуса (—); знак минуса перед числом показывает, что возвращаемое значение отрицательное.
Если значение, возвращаемое этими функциями, вызвало бы переполнения или потерю точности, или если преобразование невозможно, возвращаются значения особых случаев, как показано ниже:
| Функция | Условие | Возвращенное значение |
|---|---|---|
| strtod | Переполнение | +/- HUGE_VAL |
| strtod | Потеря точности или отсутствие преобразования | 0 |
| strtol | Переполнение + | LONG_MAX |
| strtol | Переполнение – | LONG_MIN |
| strtol | Потеря точности или отсутствие преобразования | 0 |
| _strtoi64 | Переполнение + | _I64_MAX |
| _strtoi64 | Переполнение – | _I64_MIN |
| _strtoi64 | Преобразование не выполнено | 0 |
| _strtoui64 | Переполнение | _UI64_MAX |
| _strtoui64 | Преобразование не выполнено | 0 |
_I64_MAX, _I64_MIN и _UI64_MAX определены в файле LIMITS.H.
Описание функций языка Си
All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
atoi – преобразование строки в число типа int
#include
int atoi (const char *str);
str – указатель на строку, которую необходимо преобразовать в число.
Функция atoi () преобразует строку, на которую указывает аргумент str, в число типа int. Преобразование заканчивается, когда встречается символ не являющейся цифрой или, когда будет преобразована вся строка. Если первый символ строки не цифра, то функция вернет 0 и завершит работу.
Если число в строке превышает максимальный или минимальный размер числа типа int, то функция возвращает соответственно максимально или минимально допустимое число для типа int. Возвращаемая величина зависит от аппаратной платформы на которой запускается программа.
От функции atol () отличается типом возвращаемого числа и как следствие макимальной длинной преобразуемой строки. Для atoi возвращаемое число имеет тип int, а соответственно разрядность 16 или 32 бита в зависимости от аппаратной платформы, на которой запускается программа. Для atol возвращаемое число имеет тип long int, который всегда 32 разрядный, не зависимо от архитектуры процессора.
Так, на пример, в результате преобразования строки «217bg12» будет получено число 217, а при преобразовании строки «b237пр» будет получено число 0.
В примере преобразуется строка «652.23brrt» в число и результат выводится на консоль.
Преобразование String в Int и Int в String в Python
В этом руководстве мы узнаем, как преобразовать String в int и int в String в python.
Строка Python в Int
Собственно, во многих случаях это необходимо. Например, вы читаете некоторые данные из файла, тогда они будут в формате String, и вам нужно будет преобразовать String в int.
Теперь перейдем к коду. Если вы хотите преобразовать число, представленное в строке, в int, вы должны использовать для этого функцию int(). Смотрите следующий пример:
Результатом следующего кода будет:
Преобразование функционала из другой базы
Если строка, которую вы хотите преобразовать в число int, принадлежит другой базе чисел, отличной от базы 10, вы можете указать базу для преобразования.
Но помните, что выходное целое число всегда находится в базе 10. Еще одна вещь, которую вам нужно запомнить, – это то, что данная база должна находиться в диапазоне от 2 до 36. Смотрите следующий пример, чтобы понять преобразование строки в int с аргументом base.
Результатом следующего кода будет:
Исключение ValueError при преобразовании
При преобразовании строки в int вы можете получить исключение ValueError. Это исключение возникает, если строка, которую вы хотите преобразовать, не представляет никаких чисел.
Предположим, вы хотите преобразовать шестнадцатеричное число в целое. Но вы не передали аргумент base = 16 в функцию int(). Он вызовет исключение ValueError, если есть какая-либо цифра, которая не принадлежит десятичной системе счисления. Следующий пример иллюстрирует это исключение при преобразовании строки в int.
В итоге результатом приведенного выше кода будет:
Как преобразовать int в строку
Преобразование int в строку не требует усилий или проверки. Вы просто используете функцию str() для преобразования. Смотрите следующий пример:
string в int и обратно
Сначала я вывел стринг в инт, но мне нужно чтобы если я не хочу отвечать на очередной вопрос мог его пропустить командой, но обратно из итна в стринг он уже не хочет переходить, подскажите как правильно сделать чтобы все заработало?
2 ответа 2
Если Вам удалось преобразовать строку, введенную пользователем, в число, то бессмысленно сравнивать строковое представление этого числа со строкой, которая числом не является.
Не говоря уже о том, что параметром Int32.Parse должна быть строка, а не целое.
А если пользователь действительно ввел «дальше», то первый Int32.Parse выбросит Exception и на этом все закончится.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками c# или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.12.22.41046
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.











