Как перевести стринг в инт
Перейти к содержимому

Как перевести стринг в инт

  • автор:

Преобразовать строку в int в C++

В этом посте мы обсудим, как преобразовать строку в int в C++.

1. Использование std::stoi функция

Стандартный подход заключается в использовании std::stoi функция преобразования строки в целое число. stoi функция была введена в C++11 и определена в заголовке . Он бросает std::invalid_argument или же std::out_of_range исключение при неправильном вводе или целочисленном переполнении соответственно. Стоит отметить, что он будет преобразовывать такие строки, как 10xyz в целое число 10 .

std :: string s = «10» ;
int i = std :: stoi ( s ) ;
std :: cout << i << std :: endl ; catch ( std :: invalid_argument const &e ) < std :: cout << "Bad input: std::invalid_argument thrown" << std :: endl ; catch ( std :: out_of_range const &e ) < std :: cout << "Integer overflow: std::out_of_range thrown" << std :: endl ;

2. Использование строковых потоков

std::stringstream можно использовать для преобразования std::string к другим типам данных и наоборот. Это страдает от той же проблемы, что и std::stoi сделал, т. е. он будет преобразовывать строки, подобные 10xyz в целое число 10 . Он возвращается INT_MAX или же INT_MIN если преобразованное значение находится вне диапазона целочисленного типа данных. Если значение строки не может быть представлено как int, возвращается 0.

std :: string s = «10» ;
std :: istringstream ( s ) >> i ;
std :: cout << i << std :: endl ;

3. Использование boost::lexical_cast

Другой хорошей альтернативой является использование boost::lexical_cast . Он бросает boost::bad_lexical_cast исключение, когда не может быть построено допустимое целое число или происходит переполнение.

std :: string s = «10» ;
i = boost :: lexical_cast < int >( s ) ;
std :: cout << i << std :: endl ; catch ( boost :: bad_lexical_cast const &e ) < // неверный ввод std :: cout << "error" << std :: endl ;

4. Использование std::atoi функция

Мы также можем использовать std::atoi функция для преобразования строки в int. Он принимает C-строку в качестве параметра, поэтому нам нужно преобразовать нашу строку в C-строку. Мы можем сделать это, используя std::string::c_str .

Обратите внимание, что его поведение не определено, если преобразованное значение выходит за пределы диапазона целочисленного типа данных. Если значение строки не может быть представлено как int, возвращается 0.

Перевод string в integer

Спасибо, все работает. Долго ломал голову и гуглил. А можешь пару коментов дать к параметрам функции этой?

2 мая 2011 в 20:29
ВНИМАНИЕ. Способ устарел, сейчас (2018) лучше использовать stoi.
24 сен 2018 в 21:44
И чтобы не надо было вчитываться в документацию, замечу, stoi использует strtol со всеми ее фичами
24 сен 2018 в 23:08

#include #include #include using namespace std; int main () < string S = "74"; istringstream iss (S, istringstream::in); int val; iss >> val; return 0; > 

Отслеживать
ответ дан 2 мая 2011 в 17:35
1,905 13 13 серебряных знаков 16 16 бронзовых знаков

#include #include using namespace std; void main() < string str = "1234567890"; int num = NULL; for (int i = 0; i < str.length(); i++)< num = num*10 + str[i] - 0x30; >cout

Отслеживать
ответ дан 8 дек 2016 в 16:10
21 3 3 бронзовых знака
int num = NULL; .
8 дек 2016 в 16:12
оно работать будет, но да, выглядит дико. Но точка с запятой после include — это интересно.
8 дек 2016 в 16:14
сделай так, если страшно: int num = 0;
8 дек 2016 в 16:26

можно написать по всякому, но лучше писать так, как принято. Но в 2016 году лучше использовать std::stoi.

8 дек 2016 в 16:40
это сильно просто:
8 дек 2016 в 16:54

using namespace std; void main()

Отслеживать
ответ дан 10 янв 2022 в 19:31
Vasyl Androshchook Vasyl Androshchook
11 2 2 бронзовых знака

В текущем виде ваш ответ непонятен. Пожалуйста, нажмите править под сообщением, чтобы добавить больше подробностей, которые помогут другим понять, как он отвечает на заданный вопрос. Вы можете найти больше информации о том, как писать хорошие ответы в Справке.

10 янв 2022 в 19:33

добро пожаловать на stack overflow на русском! пожалуйста, постарайтесь оставлять чуть более развёрнутые ответы. дополнить ответ можно, нажав править

Преобразование строки в число в Python. Особенности преобразования числа в строку

Python_Deep_21.1-5020-77b56f.png

Иногда нам нужно выполнить преобразование строки в целое число либо в число с плавающей точкой. Потребность в этом возникает для осуществления ряда операций. Как это сделать в Python, мы сейчас и поговорим.

Чтобы осуществить преобразование строки в целое число либо число с плавающей точкой, в Python используют функции int и float. Если вы захотите выполнить преобразование без применения данных функций, то получите ошибку. Например, к ошибке приведёт следующий код:

 
str_a = ’50’ b = 10 c = str_a + b print (c)
Преобразование строки в целое число с помощью int() в Python

Давайте посмотрим на следующий участок кода:

 
str_a = '50' b = 10 c = int(str_a) + b print ("The value of c = ",c)

С его помощью мы выведем значение переменной «c», которое будет представлять собой сумму переменных «str_a» и «b».

Преобразуем десятичную строку в число с плавающей точкой в Python

Для преобразования строки в число с плавающей точкой мы можем использовать float:

 
#Преобразование string во float str_a = '50.85' b = 10.33 c = float(str_a) + b print ("The value of c = ",c)

Однако учтите, что если вы захотите задействовать тут функцию int() , это приведёт к ошибке.

Преобразуем список строковых чисел в список целых чисел в Python

Бывает, что в Python необходимо выполнить преобразование строки из чисел, содержащихся в списке. В таких случаях нам поможет генератор списков. Таким образом создаётся новый список, где можно использовать функцию int() в каждой итерации:

 
#Преобразование string в int в списке str_lst = ['1', '2', '3'] int_lst = [int(x) for x in str_lst] print (int_lst)

Мы выведем новый список, который будет состоять из целых чисел, полученных из строк.

Преобразуем список строк в список чисел с плавающей точкой в Python

Аналогично можно применять float вместо int для выполнения преобразования списка, включающего в себя строки из целых чисел:

 
#Преобразование string во float в списке str_lst = ['10.505', '2.3', '3.99'] float_lst = [float(x) for x in str_lst] print (float_lst)
Преобразование строки с запятыми в число в Python

Что делать, если у нас строка наподобие «1,000,000»? Если мы попробуем выполнить её преобразование с помощью функций int() либо float() , мы получим ошибку.

Одно из решений — применение import locale:

 
locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’ )

Приём работает, но он не идеален. Другое решение — заменить запятые на пустые строки, а потом применить уже известную нам функцию int:

 
str_a = '5,123,000' int_b = int(str_a.replace(',','')) print ("The integer value",int_b)

Результат — целое значение. Это же решение мы можем использовать и для преобразования строки в число с плавающей точкой в Python.

Преобразование строки в число при расчёте високосного года в Python

Как известно, пользовательский ввод в «Пайтоне» воспринимается как строка. К примеру, в следующем коде программа попросит пользователя ввести год, а после ввода значений программа сообщит, является ли этот год високосным. При этом введённое значение сначала будет преобразовано в целое число, а потом будет задействована формула расчёта високосного года:

 
#Расчёт високосного года try: Y = int(input("Enter a Year? ")) exceptValueError: print ("You may only enter digits in '2000' format!") else: leap_or_not = Y%4 == 0 ifleap_or_not: print ("Leap year") else: print ("Not a leap year")

Таким образом происходит преобразование вводимой строки в целое число, а потом это число применяется для расчёта.

Как преобразовать целое число в строку в Python?

При выполнении преобразования целых чисел в строки используется функция str() . Она принимает объект, который может иметь тип int, float, double и так далее.

Давайте посмотрим на пример преобразования переменной int в строку, которая потом применяется как строка для конкатенации:

 
#Преобразование int в string a_string = "str function for int to string" a_num = 456 print (a_string + str(a_num))

Результат будет следующим:

 
str function for int to string456

Кстати, если бы целочисленная переменная была нами использована без str() , результатом стала бы ошибка TypeError.

Java: преобразование строки в число и наоборот

В некоторых случаях при программировании на Java нам нужно выполнить преобразование строки в число или числа в строку. Это бывает, если мы имеем величину определённого типа и желаем присвоить эту величину переменной другого типа. Преобразования типов в Java осуществляются разными способами, давайте рассмотрим наиболее популярные из них.

Как преобразовать строку в число в Java?

Речь идёт о преобразовании String to Number. Обратите внимание, что в наших примерах, с которыми будем работать, задействована конструкция try-catch. Это нужно нам для обработки ошибки в том случае, когда строка содержит другие символы, кроме чисел либо число, которое выходит за рамки диапазона предельно допустимых значений указанного типа. К примеру, строку «onlyotus» нельзя перевести в тип int либо в другой числовой тип, т. к. при компиляции мы получим ошибку. Для этого нам и нужна конструкция try-catch.

Преобразуем строку в число Java: String to byte

Выполнить преобразование можно следующими способами:

C помощью конструктора:

try < Byte b1 = new Byte("10"); System.out.println(b1); >catch (NumberFormatException e)

С помощью метода valueOf класса Byte:

String str1 = "141"; try < Byte b2 = Byte.valueOf(str1); System.out.println(b2); >catch (NumberFormatException e)

С помощью метода parseByte класса Byte:

byte b = 0; String str2 = "108"; try < b = Byte.parseByte(str2); System.out.println(b); >catch (NumberFormatException e)

А теперь давайте посмотрим, как выглядит перевод строки в массив байтов и обратно в Java:

String str3 = "20150"; byte[] b3 = str3.getBytes(); System.out.println(b3); //массив байтов переводится обратно в строку try < String s = new String(b3, "cp1251"); System.out.println(s); >catch (UnsupportedEncodingException e)

Преобразуем строку в число в Java: String to int

Здесь, в принципе, всё почти то же самое:

Используем конструктор:

try < Integer i1 = new Integer("10948"); System.out.println(i1); >catch (NumberFormatException e)

Используем метод valueOf класса Integer:

String str1 = "1261"; try < Integer i2 = Integer.valueOf(str1); System.out.println(i2); >catch (NumberFormatException e)

Применяем метод parseInt:

int i3 = 0; String str2 = "203955"; try < i3 = Integer.parseInt(str2); System.out.println(i3); >catch (NumberFormatException e)

Аналогично действуем и для других примитивных числовых типов данных в Java: short, long, float, double, меняя соответствующим образом названия классов и методов.

Как преобразовать число в строку в Java?

Теперь поговорим о преобразовании числа в строку (Number to String). Рассмотрим несколько вариантов:

1. Преобразование int to String в Java:
 
int i = 53; String str = Integer.toString(i); System.out.println(str);
2. Преобразование double to String в Java:
 
double i = 31.6e10; String str = Double.toString(i); System.out.println(str);
3. Преобразуем long to String в Java:
 
long i = 3422222; String str = Long.toString(i); System.out.println(str);
4. Преобразуем float to String в Java:
 
float i = 3.98f; String str = Float.toString(i); System.out.println(str);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *