C как конвертировать string в long
// convert string → float
float value = Convert.ToSingle(«234»);
// convert string → double
double value = Convert.ToDouble(«234»);
// convert string → short
short value = Convert.ToInt16(«234»);
// convert string → int
int value = Convert.ToInt32(«234»);
// convert string → long
long value = Convert.ToInt64(«234»);
// convert string → ushort
ushort value = Convert.ToUInt16(«234»);
// convert string → uint
uint value = Convert.ToUInt32(«234»);
// convert string → ulong
ulong value = Convert.ToUInt64(«234»);
На заметку! При ииспользовании Convert желательно использоввать конструкцию try и catch .
То есть в случае ошибки конвертации мы обработаем исключение.
try
<
int value = Convert.ToInt32( «234» );
>
catch (FormatException e)
<
Console .WriteLine( «Input string is not a sequence of digits.» );
>
catch (OverflowException e)
<
Console .WriteLine( «The number cannot fit in int.» );
>
catch (Exception e)
<
Console .WriteLine(e.Message);
>
← Предыдущая тема
Память. Сборщик мусора (garbage collector). Автоматическое освобождение памяти В C#
Следующая тема →
C# конвертация числа в строку (int, double, short, . → string) с требуемой точностью
C как конвертировать string в long
Нередко может возникнуть необходимость объединить строку с данными других типов, например, числами. Однако объединить строку мы можем только с другой строкой. Поэтому данные других типов вначале необходимо преобразовать в строку. Для преобразования в строку применяется функция std:to_string() , в которую передается преобразуемое значение:
#include #include int main() < unsigned age; std::string message< "Age: " + std::to_string(age)>; std::cout
Функции преобразования из строки в число
Нередко может вощникнуть противиположная задача — преобразовать строку в другой тип. Есть ряд функций, которые преобразуют строку в число определенного типа:
- stoi() : преобразует в тип int
- stol() : в long
- stoll() : в long long
- stoul() : в unsigned long
- stoull() : в unsigned long long
- stof() : в float
- stod() : в double
- stold() : в long double
Все они определены в модуле , работают однотипно и в качестве параметра принимают преобразуемую строку:
std::string str< "123" >; int n< std::stoi(str) >; // n == 123
Преобразование строки в указатель на символы
При необходимости можно преобразовать значение типа string в указатель на символы. Для преобразования в указатель на константную строку применяется метод c_str() :
#include #include int main() < std::string message ; const char* message_ptr = message.c_str(); // преобразуем в указатель std::cout
Для получения указателя также можно применять метод data() , который возвращает указатель на неконстантное значение, если объект string не является константой.
#include #include int main() < std::string message ; char* message_ptr = message.data(); // преобразуем в указатель std::cout
Преобразовать строку в 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 в long java
Для преобразования строки в тип long в Java можно использовать метод Long.parseLong() . Он принимает строку и возвращает соответствующее ей значение типа long:
String str = "123456789"; long num = Long.parseLong(str);