Hola y bienvenido. En esta conferencia, quiero hablar sobre la conversión de
cadenas, algunas funciones más de cadenas.
Es muy común convertir el caso de caracteres, específicamente.
Si desea que su cadena sea todo caracteres en mayúscula,
afortunadamente, hay una función de dos
superiores que convierte de minúsculas a
mayúsculas y una función de dos inferiores que convierte
de mayúsculas a minúsculas. De minúscula a superior, de superior a inferior.
Ambas funciones devuelven el carácter convertido o el mismo carácter
para los caracteres que ya están en el caso correcto o
que no son convertibles, como los caracteres de puntuación, si no puede convertirlos.
Así es como puedes convertir una cadena a mayúsculas.
Recuerde, estos se utilizan en realidad
personaje por personaje.
Entonces, si tuviera un búfer que fuera una matriz de
caracteres, tendría que pasar por cada elemento en el búfer
y luego hacer dos arriba en ese carácter.
Así que aquí revisamos
cada elemento de nuestra matriz de caracteres de búfer
y lo pasamos al método de dos superiores.
Y eso devolverá un personaje, eso es una mayúscula y lo asignaremos a nuestros beneficios por.
Vamos a hacer eso hasta que
logremos el carácter nulo. Así que esta es una declaración de cuatro que solo tiene una línea.
Esto convierte la cadena completa en
una tasa de búfer en mayúsculas al recorrer la cadena un carácter a la vez.
El bucle se detiene cuando alcanza el carácter de terminación de la cadena, la barra invertida cero.
La conversión del tipo char está ahí porque hay dos retornos superiores de tipo int, que
es el valor ASCII y simplemente lo convierte.
Y harías lo mismo si quisieras convertirlo a minúsculas, muy simple de
usar las funciones de conversión de mayúsculas y minúsculas.
Entonces puede usar la función dos superiores en combinación con la función strstr
para averiguar si una cadena ocurre en otra ignorando el caso.
Así que veamos este ejemplo que hace exactamente eso.
Aquí tenemos dos matrices de caracteres, texto y subcadena.
El texto es de tamaño cien, la subcadena es de tamaño cuarenta.
Le pedimos al usuario que ingrese una cadena a buscar, de menos de cien caracteres.
Lo obtenemos, lo almacenamos en texto.
Y luego ingresamos la cadena que quieren encontrar
usando strstr, luego la subcadena, para que ingresen otra subcadena.
Luego imprimimos la primera cadena y luego imprimimos la segunda cadena.
Luego convertimos ambas cadenas a mayúsculas.
Y luego podemos decir que la segunda cadena encontró la primera cadena.
Entonces, cuando llamamos strstr, puede
ignorar mayúsculas y minúsculas. Porque recuerde, una de las limitaciones de strstr era
que distingue entre mayúsculas y minúsculas.
Y ahora podemos usar strstr en
texto y subcadena porque todos son caracteres en mayúscula.
Y nuevamente, esta es una forma de
encontrar si una subcadena está en una cadena completa ignorando mayúsculas y minúsculas.
Primero, convertimos todo a mayúsculas y ahora comparamos mayúsculas, y eso es lo
que hace este programa.
A menudo es el caso de que desee convertir cadenas en números.
Entonces, hay funciones específicas que comienzan con a.
Son como atof, atoi, atol y atoll.
Atoi muy común, convirtiendo una cadena en un int.
Entonces, atof va a convertir una cadena, y
es como ASCII, ASCIItof. Va a convertir una cadena en un tipo de datos.
Entonces, un atof es un ASCII para un flotador o un doble para un flotador.
Y puede tener ciertos valores de retorno. Si no se encuentra o no se puede hacer.
Entonces, a veces no puede convertir cadenas en números enteros, especialmente si tiene una cadena que solo tiene palabras.
Por lo general, usa esta función cuando tiene en el ejemplo.
Si tiene una cadena de caracteres que tiene 98. 4, que se puede representar como un doble.
Entonces puedes hacer un atof en él. Si tiene una cadena de caracteres
de Jason, no puede convertirla en un número
entero flotante, por lo que no sucederá nada. Entonces, cuando tenga cadenas de caracteres
que tengan números, puede convertirlas usando estas funciones ASCIIto.
Y todo esto está incluido en el archivo de encabezado lib estándar.
También verá lo contrario
para crear enteros en cadenas, verá cosas como itoa, que es int para ASCII.
Si tuvieras un número 98 y quieres convertirlo en una cadena, dirías itoa.
También hay algunas funciones más nuevas.
Estos son específicamente para que la cadena se
duplique en lugar de atof.
Puede utilizar estos
strtod o strtof o stringtold.
Y cada uno de ellos simplemente se convierte en flotadores dobles largos o dobles flotantes.
Pero cualquiera de ellos está bien. Los ASCII son los tradicionales.
Creo que los otros strtods y strtofs se agregaron en estándares posteriores de c.
Así que aquí tienes un ejemplo de cómo hacer algunas conversiones.
Es muy, muy básico. Aquí tenemos una matriz de caracteres
str, 3. 5 espacio 2. 5 espacio 1. 26.
Tenemos un par de sugerencias. Y lo seguiremos
hasta que saltemos es si no podemos convertirlo.
Entonces decimos strtod. Pasamos nuestra dirección
de nuestro ptr, nuestro puntero y pasamos nuestra
cadena p, que es nuestra cadena,
3. 5 2. 5.
Ahora puede decir por qué está pasando la p str en lugar de solo
la str y no es necesario. Pero aquí queremos comprobar si
no hubo conversión.
Entonces, debido a que estamos verificando que no haya conversión, tenemos que mirar ambos punteros.
No puede comparar el ptr con el str porque el str es una matriz.
Entonces, usaremos la pieza pstr para representar nuestra matriz de caracteres para que podamos comparar.
Y si comparamos
esos dos, significa que pstr no almacenó ninguna
conversión, y así terminamos. En realidad, no pudimos convertir ese valor.
De lo contrario, si pudiéramos convertir el valor, simplemente lo imprimiremos
y luego iremos a la siguiente conversión. Pstar va a ser igual al puntero.
Entonces puede ejecutar esto y puede ver que
terminará convirtiendo todo en la matriz de cadenas a valores
específicos dobles, valores dobles.
Normalmente uso atoi, atof, pero cualquiera
de estos funcionará.
Estas son las funciones de conversión. Gracias.