c string conversion functions
Este tutorial cubre las funciones de conversión de cadenas de C ++ que se pueden usar para convertir la cadena en int & double e int en una cadena, etc.
Es común convertir cadenas a números como enteros y dobles cuando estamos desarrollando aplicaciones C ++.
Este tema cubre las funciones que se pueden usar para convertir de manera efectiva las cadenas a int & double y valores numéricos a una cadena.
=> Lea la popular serie de capacitación en C ++ aquí.
Lo que vas a aprender:
Funciones de conversión de cadenas de C ++
Cuando programamos aplicaciones usando C ++, se hace necesario convertir datos de un tipo a otro. La conversión de datos debe ser tal que no se pierda ningún dato cuando convertimos los datos existentes a un nuevo tipo. Esto es especialmente cierto cuando convertimos datos de cadena en números y viceversa.
En este tutorial, discutiremos las diversas funciones para convertir std :: string object en tipos de datos numéricos, incluidos integer y double.
Convertir cadenas en tipos numéricos en C ++
En general, existen dos métodos comunes para convertir cadenas en números en C ++.
- Uso de funciones stoi y atoi que se replican para todos los tipos de datos numéricos.
- Usando la clase stringstream.
Analicemos cada método en detalle.
Uso de las funciones stoi y atoi
La clase std :: string admite varias funciones para convertir cadenas en enteros, largos, dobles, flotantes, etc. Las funciones de conversión admitidas por std :: string se tabularizan de la siguiente manera:
Función | Descripción |
---|---|
de pie stol stoll | Convierte una cadena en un entero (incluidos los tipos long y long long). |
atoi atolón atolón | Convierte la cadena de bytes en un entero (incluidos los tipos long y long long). |
permaneció polvo stold | Convierte cadenas de bytes en valores de punto flotante (incluidos los tipos flotante, doble y doble largo). |
stoul stoull | Convierte la cadena de bytes en un entero sin signo (incluidos los tipos long sin signo y long long sin signo). |
Nota: A excepción de las funciones para convertir cadenas de bytes (atoi), todas las demás funciones de conversión están presentes desde C ++ 11 en adelante. Ahora discutiremos las funciones de conversión para convertir string a int y string a double.
Cadena a int usando stoi () y atoi ()
de pie()
Prototipo de función: stoi (const std :: string & str, std :: size_t * pos = 0, int base = 10);
Parámetro (s):
str => Cadena para convertir
pos => Dirección de un entero para almacenar el número de caracteres procesados; predeterminado = 0
base => La base numérica; predeterminado = 0
Valor devuelto: Entero equivalente a la cadena especificada.
Excepciones: std :: invalid_argument => Si no se puede realizar ninguna conversión.
Std :: out_of_range => Si el valor convertido está fuera del rango del rango del tipo de resultado.
Descripción: La función stoi () toma una cadena como argumento y devuelve un valor entero. Lanzará una excepción si el valor convertido está fuera de rango o si no se puede realizar la conversión.
Tomemos un ejemplo de programación para comprender mejor esta función.
|_+_|Producción:
soportes ('53') es 53
soportes ('3,142') es 3
stoi ('31477 con char') es 31477
En el programa anterior, hemos utilizado la función stoi con tres cadenas diferentes. Tenga en cuenta que al convertir los datos de la cadena en un valor entero, la función descarta los espacios en blanco o cualquier otro carácter.
Por tanto, en el caso de mystr2 (3.142), la función descartó todo lo que estaba después del punto decimal. Del mismo modo, en el caso de mystr3 (“31477 con char”), solo se tuvo en cuenta el número. Se descartaron otros contenidos de la cadena.
atoi ()
Prototipo de función: int atoi (const char * str);
Parámetro (s): str => Puntero a una cadena de bytes terminada en nulo.
Valor devuelto:
Success => Valor entero correspondiente al argumento str.
Fallo => Indefinido si el valor convertido está fuera de rango.
0 => Si no se puede realizar ninguna conversión.
Descripción: Esta función convierte una cadena de bytes en un valor entero. La función atoi () descarta cualquier espacio en blanco hasta que se encuentra un carácter que no es un espacio en blanco y luego toma los caracteres uno por uno para formar una representación de número entero válido y lo convierte en un número entero.
Ejemplo de función atoi
|_+_|Producción:
atoi ('24') es 24
atoi ('3.142') es 3
atoi ('23446 con char') es 23446
atoi ('palabras con 3') es 0
Como se muestra en el programa anterior, la función atoi toma una cadena de bytes como argumento y la convierte en un valor entero. Los espacios en blanco o cualquier otro carácter se descartan. Si el valor convertido está fuera de rango, se devuelve 0.
Cadena para doblar usando stod ()
Prototipo de función: stod (const std :: string & str, std :: size_t * pos = 0);
Parámetro (s):
str => Cadena para convertir
pos => Dirección de un entero para almacenar el número de caracteres procesados; predeterminado = 0
Valor devuelto: Valor doble equivalente a la cadena especificada.
Excepciones:
std :: invalid_argument => Si no se puede realizar ninguna conversión.
std :: out_of_range => Si el valor convertido está fuera del rango del rango del tipo de resultado.
Descripción: Esta función convierte una cadena en un valor de punto flotante. La función stod () descarta cualquier espacio en blanco hasta que se encuentra un carácter que no es un espacio en blanco y luego toma los caracteres uno por uno para formar una representación numérica de punto flotante válido y lo convierte en punto flotante.
Veamos un ejemplo que demuestra esta función.
|_+_|Producción:
stod ('24') es 24
stod ('3.142') es 3.142
stod ('23446 con char') es 23446
El programa anterior demuestra el uso de la función 'stod'. La salida indica los valores dobles convertidos de las cadenas especificadas.
Usando la clase stringstream
El uso de la clase stringstream es la forma más fácil de convertir valores de cadena en valores numéricos.
Aprenderemos la clase Stringstream en detalle en nuestros tutoriales posteriores. A continuación se muestra un programa en C ++ que demuestra la conversión de cadenas a valores numéricos.
|_+_|Producción:
Valor num: 2508
Valor de dNum: 3,142
En el programa anterior, vemos que hemos declarado un objeto de cadena. Luego declaramos un objeto stringstream y pasamos la cadena a este objeto para que la cadena se convierta en un objeto stringstream. Luego, este objeto stringstream se pasa a un valor entero usando el operador '>>' que convierte el objeto stringstream en un entero.
Del mismo modo, también hemos convertido la cadena en doble. Por tanto, siempre que el operador “>>” admita el tipo de datos, podemos convertir una cadena en cualquier tipo de datos utilizando un objeto stringstream.
Convertir int a cadena en C ++
También podemos convertir valores numéricos en valores de cadena. Hay dos métodos para convertir valores numéricos en valores de cadena y los discutiremos a continuación.
Usando la función to_string ()
Prototipo de función: std :: string to_string (tipo valor);
Parámetro (s): valor => Valor numérico para convertir
Valor devuelto: Valor de cadena que contiene el valor convertido.
Excepción: puede lanzar std :: bad_alloc
Descripción: Esta función to_string () convierte el valor numérico pasado como argumento al tipo de cadena y devuelve la cadena.
Veamos un ejemplo de esta función usando un programa C ++.
|_+_|Producción:
La representación de cadena del entero: 20 La representación de cadena de float: 30.500000
Aquí tenemos dos variables, cada una de tipo integer y float. Luego llamamos al método to_string dos veces con un argumento entero y flotante y convertimos ambos valores en valores de cadena. Finalmente, mostramos los valores convertidos.
preguntas de la entrevista de programación java para experimentados
Tenga en cuenta que la conversión del valor de punto flotante a la cadena puede dar resultados inesperados ya que el número de dígitos significativos puede ser cero con el método to_string.
Usando la clase stringstream
Usando la clase stringstream, el stringstream primero declara un objeto de flujo que inserta un valor numérico como un flujo en el objeto. Luego usa la función 'str ()' para convertir internamente un valor numérico en una cadena.
Ejemplo:
|_+_|Producción:
La cadena formada a partir de un entero es: 26082019
La cuerda formada por doble es: 3.142
En este listado, hemos definido un valor entero y un valor doble. Luego tenemos el objeto ostringstream mediante el cual convertimos el valor numérico al objeto stringstream. Esto está usando el '<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
Conclusión
En este tutorial, discutimos las funciones de conversión que convierten una cadena en tipos numéricos y los tipos numéricos de nuevo en una cadena. Hemos visto las funciones y ejemplos de las funciones stoi (), stod (), atoi (), to_string () en detalle. También discutimos algunas de las funciones y métodos de la clase stringstream que nos ayudan a realizar las conversiones mencionadas.
Lectura recomendada = >> Convertir cadena en entero en Java y Métodos para convertir Int a String en Java
En nuestro próximo tutorial, aprenderemos las funciones de conversión para tipos de datos de caracteres.
=> Consulte los tutoriales de capacitación detallados de C ++ aquí.
Lectura recomendada
- Funciones de cadena de Python
- Funciones de conversión de caracteres de C ++: char a int, char a cadena
- Tutorial de Java String con String Buffer y String Builder
- Funciones de cadena en C ++: getline, subcadena, longitud de cadena y más
- C # Convertir cadena a Int usando métodos Parse, Convert & TryParse
- Funciones de cadena de VBScript: Funciones de VBScript inStr, Replace, Mid y Trim
- Tutorial de división de cadenas de Python
- Tutorial de cadenas de C #: métodos de cadena con ejemplos de código