Contactos

C comandos para trabajar con una cadena. Bibliotecas y funciones para trabajar con filas en SI. Operaciones en cadenas.

En esta lección, discutiremos las cadenas en el estilo de C, quizás ya haya visto estas líneas en nuestro sitio web o en cualquier otro libro de texto. De hecho, las filas de S solo son matrices de símbolos, pero, con su especificidad, por lo que siempre sabemos dónde está el final de la línea. En este artículo, veremos varias funciones para trabajar con filas, por ejemplo, usted está copiando, concatenación, para obtener una longitud de cadena.

¿Qué es las cuerdas?

Tenga en cuenta que junto con las cuerdas en el estilo de C, que, de hecho, son matrices simples, también hay literales de cadenas, como este "literal". En realidad, las cadenas son que los literales son solo conjuntos de personajes ubicados cerca de la memoria de la computadora. Pero entre matrices y literales, todos iguales, hay una diferencia, los literales no se pueden cambiar y las líneas son posibles.

Cualquier función que toma una cadena en estilo C no se puede recibir también como parámetro, literal. En C, también hay algunas entidades que pueden parecer líneas, aunque, de hecho, no lo son. Estoy hablando de los personajes ahora, están encerrados en comillas simples, aquí hay un ejemplo: "A", como puede ver, esto no es una línea. El símbolo puede estar en un lugar específico, asignar una cadena, pero los caracteres no se pueden procesar como una cadena. Si recuerda, las matrices funcionan como punteros, por lo que si pasa un carácter a la cadena, se considerará un error.

De todo lo anterior, tuvo que entender que las filas son matrices de caracteres, y los literales de cuerdas son palabras rodeadas de comillas dobles. Aquí hay otro ejemplo de literal:

"Esta es una cadena estática"

Aún no se ha olvidado de los detalles específicos de las líneas, que se mencionó un poco más alto? Por lo tanto, las filas S siempre deben terminar con un símbolo cero, literalmente - "\\ 0". Por lo tanto, para declarar una cadena que consta de 49 letras, debe reservar una celda adicional en cero símbolo:

Char con mi cadena;

Como se puede ver desde el ejemplo, la longitud de la matriz es de 50 caracteres, 49 de los cuales tomarán la cadena y una, esta última tomará el símbolo cero. Es importante recordar que al final de las líneas SI siempre debe ser un carácter cero, al igual que al final de cada oración hay un punto. Aunque el símbolo no se muestra cuando se deriva la cadena, aún se lleva a cabo en la memoria. Por lo tanto, técnicamente, en una matriz de cincuenta elementos, puede guardar solo 49 letras, ya que, se necesita el último carácter para completar la cadena. Además, los punteros también se pueden usar como una cadena. Si lees un artículo sobre, puedes hacer algo similar:

Char * mystring; // Tipo de puntero Char MyString \u003d Malloc (STEYOF (* Mystring) * 64); // Asignación de memoria

En este ejemplo, asignamos 64 celdas en la memoria para la matriz Mystring. Para liberar la memoria, use la función libre ().

Libre (Mystring);

Usando cadena

Las filas son útiles para usar cuando necesite realizar varias operaciones de información textuales. Por ejemplo, si desea que el usuario ingrese un nombre de programa, debe usar la cadena. Uso de la función SCANF () para ingresar a la cadena: funciona, pero esto puede llevar a un desbordamiento de búfer. Después de todo, la cadena de entrada puede resultar mayor que el tamaño de la cadena de búfer. Hay varias formas de resolver este problema, pero la forma más fácil es usarla para ser anunciada en el archivo de encabezado. .

Cuando lea la entrada del usuario, leerá todos los caracteres, excepto lo último. Después de eso, al final de la línea de lectura, se colocará el terminador cero. La función FETS () leerá los caracteres hasta que el usuario haga clic en ingresar. Veamos un ejemplo de usando fgets ():

#Incluir. INT principal () (Char My String; // Long String Printf ("Enter cuerda larga: "); Fgets (Mystring, 100, STDIN); // Lea la línea de impresión desde el flujo de entrada (" ingresó en la siguiente línea:% s ", mystring); getchar ();)

El primer parámetro para fgets () es una cadena, el segundo parámetro: el tamaño de la cadena y el tercer parámetro es un puntero para flujo de entrada datos.

El resultado del programa:

<ВВОД>...

Como puede ver, desde la salida del programa, el símbolo de la nueva línea llegó a la línea de entrada: "\\ n". Así sucedió debido al hecho de que los segundos () creyeron en la cadena Mystring presionando el botón ENTER y completó el trabajo. Esto significa que es posible que deba eliminar manualmente un símbolo de una nueva línea. Una de las formas de hacer esto, el busto de la colina. Vamos a finalizar el programa y eliminar el símbolo de la nueva línea:

#Incluir. INT Main () (char Misstring; // Long String Printf ("Ingrese una cadena larga:"); se fgets (Mystring, 100, STDIN); // Lea del flujo de entrada int i; para (i \u003d 0; i; i< 100; i++) { if (myString[i] == "\n") { myString[i] = "\0"; break; } } printf("Вы ввели следующую строку: %s", myString); getchar(); }

Tenga en cuenta que si la línea de entrada contiene menos de 100 caracteres, el nuevo símbolo de cadena caerá en la cadena. Por lo tanto, podemos eliminar este símbolo con un simple busto. En el programa, agregamos un bucle en el que juramos personajes de cuerdas, filas 12-19.. Y cuando se nos encontramos un símbolo de una nueva línea, lo reemplazamos con un símbolo cero, fila 16.. El resultado del programa:

Ingrese una cadena larga: el destino deja su impresión, ingresó en la siguiente línea: el destino deja su impresión para cerrar esta ventana, presione<ВВОД>...

Eso es todo. En el siguiente artículo, te lo contaré. características especiales Para trabajar con filas.

P.S.: Nos encanta ver diferentes registros de video, pero a veces sucede que no siempre es posible reproducir algunos formatos de archivos de video. Por lo tanto, puede resolver este problema utilizando el programa - Xilisoft Converter Ultimate. Puede convertir fácilmente el video de un formato a otro. Además, este programa también puede convertir archivos de audio y imágenes animadas.

No es una coincidencia que el tema sobre la cadena que coloco en la sección "Arrays". Dado que la cadena es, de hecho, la matriz de caracteres. Aquí hay un ejemplo:

char str \u003d "Esto es solo una cadena";

La misma línea para una mayor comprensión se puede escribir así:

char str \u003d ("e", "t", "O", "", "P", "R", "O", "C", "T", "O", "", "C", "T", "R", "O", "K", "A");

Esos. Toda la misma matriz, solo que consiste en personajes. Por lo tanto, es posible trabajar con él, así como con matrices enteras.

Y ahora vamos a intentarlo trabajar con filas en c. En las lecciones introductorias, desmontamos que los personajes se relacionan con los tipos de enteros, es decir, Cada símbolo tiene su propio. valor numérico. Aquí hay un ejemplo y su decisión:

  1. se requiere que traduzca la palabra introducida a la mayúscula:
  2. #Incluir.
    #Incluir.

    Int main ()
    {
    Char str \u003d "Sergey";

    STR [I] - \u003d 32;
    }
    Para (int i \u003d 0; str [i]! \u003d "\\ 0"; i ++) (
    Printf ("% C", STR [I]);
    }
    getch ();

    Return 0;
    }

    para obtener el código de código, simplemente use la función PrintF por el parámetro% D. Si y uno mas momento importante: Terminando cualquier instrumentos de cuerda es un terminador cero que se indica símbolo especial - "\0".

Otra forma de especificar una cadena es declararla a través de Char *. Aquí hay un ejemplo:

char * str \u003d "provod";

Esos. Se crea un puntero en la cadena, que se encuentra en algún lugar de la memoria.

Pero, ¿cómo puedo entrar en las líneas, ya tenemos un operador nativo de SCANF:

char str; scanf ("% s", str);

Hay dos sutilezas:

  1. la dirección de la dirección de la dirección no se necesita aquí, ya que el nombre de la matriz, como ya sabemos, es la dirección
  2. La longitud de la cadena introducida no debe exceder los 15 caracteres, ya que este último debe ser un terminador cero. Además, el compilador llenará este símbolo después de que el último introdujo tu personaje.

Dado que el idioma SI es un lenguaje estructural, ya hay funciones incorporadas para trabaja con cuerdas y con símbolos. Para procesar cadenas, necesita conectar el archivo: ctype.h. El archivo contiene las funciones de definición de función, formato de símbolo. En principio, todo lo que puede necesitar aprender sobre el símbolo se puede realizar utilizando las funciones del archivo CTYPE.H

A veces es posible que deba traducir la cadena a otro tipo de datos. Para transferir filas a otros tipos, hay una biblioteca STDLIB. Aquí están sus funciones:

  1. int Atoi (char * str)
  2. atol largo (char * str)
  3. doble atof (char * str)

A veces, estas funciones ayudan, por ejemplo, cuando necesita eliminar un año o un valor digital de la línea. Trabajar con filas en C (SI) Es un tema muy importante, así que trate de profundizar en esta lección.

Anuncio de cadena

La cadena en el lenguaje C es una matriz de caracteres unidimensionales, cuyo último elemento es el final del símbolo de la cadena: cero (una cadena que termina con cero, es decir, la cadena terminada nula).

Una declaración de una cadena de tipo variable en el idioma SI es posible de tres maneras, dos de las cuales inicializan la cadena durante el anuncio.

La primera manera:

Clasificados Caracteres de matriz (no olvide agregar un lugar para el final final):

Char s;

La segunda forma:

Asignar una variable de cadena El valor inicial (mientras que la longitud de la cadena, el compilador puede calcular a sí mismo):

Char s \u003d "un ejemplo de la inicialización de la cadena";

La constante de remo se registra a la derecha del signo de asignación. Al final de la línea, cero ('\\ 0') se agrega automáticamente. Las líneas simbólicas constantes se colocan en una clase de memoria estática.

Tercera línea:

Una indicación implícita de que se utiliza una matriz. En el lado izquierdo de la señal de asignación, indica el puntero al símbolo:

Char * s \u003d "segunda opción de inicialización";

La variable S será un puntero a ese lugar en memoria de acceso aleatoriodonde se encuentra la constante de cadena. En tal forma de grabación, un error potencial radica en el hecho de que el puntero al símbolo a menudo se llama una cadena. La entrada a continuación es solo un puntero al carácter, ya que no se proporciona para la colocación de una cadena:

Char * s;

Ingrese una fila desde un dispositivo de entrada estándar (teclado)

Para trabajar con filas hay un conjunto de funciones. Para ingresar desde un dispositivo de entrada estándar (teclado), los bibliotecarios del módulo de E / S estándar se utilizan con mayor frecuencia: sCANF. y obtiene..

Para ingresar una cadena usando la función sCANF., utiliza formato « % S.» y preste atención al hecho de que la señal de dirección no se usa antes del identificador de línea « & » Dado que la matriz unidimensional ya está representada por el puntero a su inicio:

SCANF ("% s", s);

Función oBTIENE () lee símbolos hasta que alcance el símbolo de transición para nueva cadena. La función lleva a todos los caracteres al símbolo de traducción de hileras, pero no lo incluye. Al final de la línea, se agrega el cero final ('\\ 0'). Función oBTIENE () Coloca una secuencia de caracteres en un parámetro de tipo de cadena Lea del teclado y devuelve un puntero a esta cadena (si la operación se ha completado correctamente), o nulo (en caso de un error). En el siguiente ejemplo, cuando finalice con éxito la operación, se mostrarán dos líneas idénticas en la pantalla:

#Incluir. INT principal () (Char S; char * p; p; p \u003d obtiene (s); printf ("\\ n una cadena% s", s); if (p) printf ("\\ n se ingresa la cadena% s. ", P); devolver 0;)

En general, observamos que la función Obtener se usa a menudo para ingresar los datos del teclado en forma de una cadena para convertir aún más la función SSCANF al formato deseado o para los datos ingresados \u200b\u200banteriores, por ejemplo:

#Incluir. #Incluir. #Incluir. INT principal () (Char S; int x, error; do (printf ("\\ n ingrese un entero -\u003e"); obtiene (s); er \u003d sscanf (s, "% d", & x); si ( Err! \u003d 1) Printf ("\\ n Error de entrada");) Mientras (ERR! \u003d 1); PRUPF ("\\ n un entero se introduce -\u003e% d", x); devuelva 0;)

Salida de fila al dispositivo de salida estándar (pantalla de monitor)

Para mostrar filas a un dispositivo de salida estándar (pantalla de monitor), puede usar dos funciones. printf. y pone.. En la función PrintF, "% s" se transmite como un formato. La facilidad de usar esta función es que, además de la fila, puede mostrar inmediatamente estos tipos de datos. Función de característica pone. Es que después de la salida de la línea, la siguiente línea se está moviendo automáticamente.

Funciones para trabajar con filas.

Para convertir las filas en el idioma SI, se proporciona la biblioteca de cadenas. Cada una de las funciones tiene su propio formato de grabación (prototipo).

Las características más utilizadas se consideran en este artículo. - leer

Programas de muestra (listado) trabajando con línea

Las cadenas del programa se pueden determinar de la siguiente manera:

  • como constantes de cadena;
  • como caracteres matrimoniales;
  • a través de un puntero al tipo de símbolo;
  • como las matrices de líneas.

Además, se debe proporcionar asignación de memoria para almacenar una cadena.

Cualquier secuencia de símbolos concluidos en comillas dobles "" se considera como constante de cuerdas.

Para la salida correcta, cualquier cadena debe terminar con el símbolo cero "\\ 0", cuyo valor entero es igual a 0. Cuando se declara constante de cadena, se le agrega automáticamente el carácter cero. Por lo tanto, la secuencia de caracteres, que es una constante de cadena, se publicará en la memoria de la computadora, incluido el byte cero.

Bajo el almacenamiento de la cadena resalta las células de RAM en ejecución secuencialmente. Por lo tanto, la cadena es una matriz de caracteres. Para almacenar el código de cada símbolo de cadena 1 byte se administra.

Para colocar en una constante de cadena, algunos caracteres de servicio se usan combinaciones simbólicas. Por lo tanto, si necesita encender el símbolo de la cotización doble en la cadena, debe estar precedido por el símbolo de "barra inversa": '\\ "'.

Las constantes de las cuerdas se colocan en la memoria estática. La dirección inicial de la secuencia del símbolo en comillas dobles se interpreta como la dirección de línea. Las constantes de las cadenas se utilizan a menudo para implementar un diálogo de usuario en características como Printf ().

Al determinar matriz de símbolos Debe decirle al compilador de tamaño de memoria requerido.

encanto;

El compilador también puede determinar independientemente el tamaño de la matriz de símbolos si la inicialización de matriz se establece cuando se declara la constante de cadena:

char m2 \u003d;
char m3 \u003d ( "T", "y", "X", "y", "E", "", "D", "O", "L", "y", "N", "S", "", "P", "O", "L", "N", "Y", "", "C", "V", "E", "F", "E", "YA", "", "M", "G", "L", "O", "Y", "\\ 0"};

En este caso, los nombres M2 y M3 son punteros a los primeros elementos de las matrices:

  • m2 equivalente y M2
  • m2 equivalente a 'G'
  • m2 equivalente a 'O'
  • m3 equivalente y M3
  • m3 es equivalente a 'X'

Al declarar la matriz de caracteres e inicialización, su constante de cadena puede especificar explícitamente el tamaño de la matriz, pero especificado La matriz debe ser mayor que el tamaño de la constante de cadena de inicialización:

char m2 \u003d. "Los picos de montaña duermen en la oscuridad de la noche".;

Para especificar una cadena que puede usar puntero de tipo símbolo.

char * m4;

En este caso, la Declaración de la matriz de variables M4 se puede asignar la dirección de la matriz:

m4 \u003d m3;
* M4 es equivalente a m3 \u003d "t"
* (M4 + 1) es equivalente a m3 \u003d "y"

Aquí M3 es un puntero constante. No puede cambiar M3, ya que significaría cambiar la posición (dirección) de la matriz en la memoria, a diferencia de M4.

Para el puntero, puede usar una operación de aumento (mudarse al siguiente carácter):

Matrices de cadena de símbolos

A veces hay la necesidad de describir. una matriz de cadena de símbolos. En este caso, puede usar el índice de línea para acceder a varias filas diferentes.

char * poeta \u003d ( "¡El poeta murió!", "- Blap of Honor -",
"PAL", "Molva calumnia ..."};

En este caso, el poeta es una matriz que consiste en cuatro punteros a cadenas de caracteres. Cada cadena de caracteres es una matriz simbólica, por lo que hay cuatro punteros a las matrices. Poet Pointer se refiere a la primera cadena:
* Poeta. Equivalente "PAG",
* Poeta [l] Equivalente "-" .

La inicialización se realiza de acuerdo con las reglas definidas para las matrices.
Los textos en las cotizaciones son equivalentes a la inicialización de cada fila en la matriz. La coma separa al vecino.
Secuencias.
Además, puede configurar explícitamente el tamaño de las cadenas de los caracteres utilizando una descripción similar a esta:

char poeta;

La diferencia radica en el hecho de que tal forma establece la matriz "rectangular" en la que todas las líneas tienen la misma longitud.

Masivo libre

Descripción

char * poeta;


Determina la matriz libre, donde la longitud de cada fila está determinada por el puntero que inicializa esta cadena. El macizo libre no pasa memoria en vano.

Operaciones con cadenas.

La mayoría de las operaciones de idioma SI que tratan con las filas trabajan con los punteros. Para alojamiento, las cadenas de los personajes deben ser:

  • seleccione la unidad RAM bajo una matriz;
  • inicializa la cadena.

Para asegurar la memoria para almacenar la cadena, se pueden usar las funciones de asignación de memoria dinámica. Al mismo tiempo, es necesario tener en cuenta el tamaño de cadena requerido:

nombre del personaje;
nombre \u003d (char *) malloc (10);
sCANF ("% 9s", nombre);

Para ingresar a la cadena, se usa la función SCANF (), y la cadena ingresada no puede exceder los 9 caracteres. El último personaje contendrá "\\ 0".

Funciones de entrada Fila

Para ingresar una cadena, se puede usar la función SCANF (). Sin embargo, la función SCANF () está diseñada para obtener la palabra, no la cadena. Si aplica el formato "% S" para la entrada, se ingresa la cadena (pero sin incluir) el siguiente carácter vacío, que puede ser un espacio, una pestaña o una traducción de filas.

Para ingresar una cadena, incluidos los espacios, se usa una función.

char * obtiene (char *);


O su equivalente

char * get_s (char *);

Como argumento de la función, se transmite un puntero a la cadena en la que se realiza la entrada. La función le pide al usuario que ingrese una cadena que coloca en la matriz hasta que el usuario haga clic en INGRESAR.

Funciones de salida de fila

Para mostrar las líneas, puede usar la función discutida previamente.

printf ("% s", str); // str-puntero a la cadena

o en formato abreviado

printf (str);

La función también se puede utilizar para emitir cadenas.

iNT pone (char * s);

que imprime la cadena S y traduce el cursor a una nueva línea (a diferencia de la impresión ()). La función PUTS () también se puede usar para generar constantes de cadena entre comillas.

Función de entrada de símbolos

La función se puede utilizar para ingresar caracteres

char getchar ();


Que devuelve el valor del símbolo ingresado desde el teclado. La función especificada se utilizó en ejemplos previamente revisados \u200b\u200bpara retrasar la ventana de la consola después de ejecutar el programa antes de presionar la tecla.

Función de salida del símbolo

La función se puede utilizar para emitir caracteres.

char putro (char);


Que devuelve el valor del símbolo de salida y muestra el símbolo transmitido como un argumento.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

#Incluir.
#Incluir.
#Incluir.
int main () (
char s, sym;
iNT CUENTE, I;
Sistema ("CHCP 1251");
Sistema ("CLS");
Printf ( "Entra en la cadena:");
Gets_s (s);
Printf ( "Entra en el símbolo:");
sym \u003d getchar ();
Cuenta \u003d 0;
para (i \u003d 0; s [i]! \u003d "\\ 0"; i ++)
{
si (s [i] \u003d\u003d sym)
Cuenta ++;
}
Printf ("en linea \\ n");
Pone (s); // Salida de fila
Printf ("símbolo");
Puchar (sym); // salida del símbolo
Printf ( "Meet% d veces", Contar);
getchar (); getchar ();
return 0;
}

Resultado de la ejecución

Las funciones principales de la cadena estándar.

Funciones principales biblioteca estándar String.H se muestran en la tabla.

Función Descripción

char * strcat (char * s1, char * s2)

se une a S2 a S1, devuelve S1

char * strncat (char * s1, char * s2, int n)

se une a no más de N personajes S2 a S1, completa la cadena con un símbolo "\\ 0", devuelve S1

char * stry (char * s1, char * s2)

copia la cadena S2 en la cadena S1, incluida "\\ 0", devuelve S1
);
Strncpy (M3, M1, 6); // no agrega "\\ 0" al final de la línea
Pone ( "Resultado Strncy (M3, M1, 6)");
Pone (m3);
Strcpy (m3, m1);
Pone ( "Resultado Strcpy (M3, M1)");
Pone (m3);
Pone ( "Resultado STRCMP (M3, M1) es igual a");
Printf ("% d", strcmp (m3, m1));
Strncat (m3, m2, 5);
Pone ( "Resultado Strncat (M3, M2, 5)");
Pone (m3);
Strcat (m3, m2);
Pone ( "Resultado Strcat (M3, M2)");
Pone (m3);
Pone ( "El número de caracteres en una cadena M1 es STLEN (M1):");
Printf ("% d \\ n", strlen (m1));
_strnset (M3, "F", 7);
Pone ( "Strnset Result (M3," F ", 7)");
Pone (m3);
_strset (m3, "k");
Pone ( "Resultado Strnset (M3," K ")");
Pone (m3);
getchar ();
return 0;
}

Resultado de la ejecución

Filas en C ++

La cadena es una secuencia (matriz) de caracteres. Si se encuentra un solo símbolo en la expresión, debe estar encerrado en comillas simples. Cuando se usa en expresiones, la cadena se encuentra en doble comillas.Un signo del final de la línea es un símbolo cero. \0 . Las líneas C ++ se pueden describir utilizando caracteres (conjunto de elementos de tipo carbonizarse.), en el que debe proporcionar un lugar para almacenar una característica del final de la línea.

Por ejemplo, una descripción de una cadena de 25 caracteres debe verse así:

Puedes describir la matriz de líneas:

La matriz de 3 líneas de 25 bytes en cada una se define.

Para trabajar con los punteros se puede utilizar ( char *). La dirección del primer símbolo será el valor inicial del puntero.

Considere un ejemplo de las cadenas de declaración y salida.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

#include "stdafx.h"
#Incluir.
usando el espacio de nombres STD;
int main ()
{
Setlocale (lc_all, "rus");
// describe 3 líneas, índice S3
char S2 [20], * S3, S4 [30];
cOUT.<< «s2=» ; cin >\u003e S2; // entrar en fila s2
cOUT.<< «s2=» << s2<< endl;
// récord en la dirección S3 de la cadena donde se almacena S4. Ahora en las variables
// (punteros) S3 y S4 almacenaron el valor de la misma dirección
S3 \u003d S4;
cOUT.<< «s3=» ; cin >\u003e S3; // ingresando la cadena s3
// Conclusión en la pantalla de las cuerdas S3 y S4, aunque como resultado de la asignación S3 \u003d S4;
// Ahora S3 y S4 es lo mismo.
cOUT.<< «s3=» << s3<< endl;
cOUT.<< «s4=» << s4<< endl;
sistema ("pausa");
return 0;
}

El resultado del programa:

Pero, se debe tener en cuenta que si el usuario entra en una variable de palabras separada por un espacio, el programa funcionará de otra manera:

La cosa es que la función. cIN. Entra en las cuerdas hasta la brecha. La función más versátil es obtener línea.

cin.getline (char * s, int n);

Diseñado para ingresar al teclado de la fila s. Con espacios, en la fila no debe ser más. nORTE. Símbolos. En consecuencia, para la correcta entrada de líneas que contienen un espacio, es necesario reemplazar en nuestro programa cIN \u003e\u003e S. sobre el cin.getline (s, 80).

Operaciones en cadenas.

La cadena se puede procesar como una matriz de caracteres que usan algoritmos matrices o utilizando funciones especiales de procesamiento de filas, algunas de las cuales se muestran a continuación. Para trabajar con estas filas, debe conectar la biblioteca. cuerda C.

Para convertir un número a una cadena, puede usar la función sprintf. de la biblioteca stdio.h..

Algunas funciones de trabajar con filas:

Función prototipo Descripción de la función
size_t strlen (const char * s) calcula la longitud de la cadena S en bytes.
char * strcat (char * dest, const char * scr) se une a la cadena SRC al final de la línea DEST, el período resultante se devuelve como resultado
char * strcpy (char * dest, const char * scr) copia la cadena SCR a la ubicación de la memoria que indica destino
char Strncat (Char * Dest, Const Char * Dest, size_t maxlen) se une a la cadena MAXLEN de los símbolos de cadena SRC al final de la línea DEST
char * strncpy (char * dest, const char * scr, size_t maxlen) copia los símbolos de cadena MAXLEN SRC en la ubicación de la memoria que indica destino
iNT CTRCMP (Const Char * S1, Const Char * S2) compare dos líneas en el orden lexicográfico, teniendo en cuenta las diferencias en las letras mayúsculas y minúsculas, la función devuelve 0 si las cadenas coinciden, devuelven - 1, si S1 se encuentra en un orden alfabético anterior a S2, y 1, en el contrario caso.
iNT STRANCMP (Const Char * S1, Const Char * S2, size_t maxlen) compare los caracteres MAXLEN de dos líneas en un orden lexicográfico, la función devuelve 0 si las líneas coinciden, devuelven - 1 si S1 se encuentra en el orden ordenado por alfabéticamente anterior a S2, y 1, en el caso opuesto.
doble ATOF (Const Char * S) convierte una cadena en un número real, en caso de conversión fallida, se devuelve el número 0
aTOL LARGO (CONST CHAR * S) convierte una cadena en un entero largo, en caso de conversión fallida 0
char * strchr (const char * s, int c); devuelve el puntero a la primera aparición del símbolo. c. en la cadena en la que indica s.. Si el símbolo c. no encontrado devolviendo nulo
char * strupr (char * s) convierte los símbolos de la cadena a los que, en los símbolos del registro superior, después de lo cual lo devuelve

Tipo de datos de cadena

Además de trabajar con filas, como con una matriz de caracteres, en C ++, hay un tipo de datos especiales cuerda. Para ingresar a las variables de este tipo se puede utilizar. cIN., o función especial obtener línea.

getline (cin, s);

Aquí s. - El nombre del tipo ingresado variable. cuerda.

Al describir una variable de este tipo, puede asignar inmediatamente el valor de esta variable.

cadena (s) de cadena;

Aquí var. - nombre de la variable, s. - Constante de cadena. Como resultado de este operador, se crea una variable. var. Tipo cuerday registra el valor de la cadena constante s.. Por ejemplo,

cadena v (hola);

Cadena creada v.en el que se registra el valor Hola..

El acceso a los i-mu Cadena de elementos s. Tipo cuerda realizado de forma estándar s [i]. Sobre líneas de tipo cuerda Se definen las siguientes operaciones:

  • asignaciones, por ejemplo, S1 \u003d S2;
  • cadenas de remo (S1 + \u003d S2 o S1 \u003d S1 + S2): agrega a String S1 String S2, el resultado se almacena en la cadena S1, un ejemplo de fila de remo:
  • comparaciones de filas basadas en orden lexicográfico: S1 \u003d S2, S1! \u003d S2, S1 s2, S1.<=s2, s1>\u003d S2 - El resultado será un valor lógico;

Al procesar cadenas de tipo cuerda Puede utilizar las siguientes funciones:

  • s.SUBSTR (POS, LONGITUD) - Devuelve una subcadena de la línea. s.comenzando con el número pos. Largo largo. símbolos;
  • s.empty () - devuelve verdadero si la cadena s. vacío, falso, de lo contrario;
  • s.Insert (POS, S1) - Inserta una cadena s1. En una cadena s.A partir de la posición pos.;
  • s.Remove (POS, Longitud) - se elimina de la línea s. Opra largo. Largo pos. símbolos;
  • s.Find (S1, POS) - Devuelve el número de la primera fila. s1. En una cadena s., la búsqueda comienza con números pos., Parámetro pos. Puede estar ausente, en este caso la búsqueda proviene del comienzo de la línea;
  • s.FINDFIRST (S1, POS) - Devuelve el número de la primera entrada de cualquier símbolo de la cadena s1. En una cadena s., la búsqueda comienza con números pos.que puede estar ausente.

Lengua rusa para cuerdas.

Creo que ya se ha dado cuenta de que al retirar letras rusas, aparecen los símbolos "izquierdos" en la consola. Para evitar este malentendido, debe usar una función de terceros. Charooema.. Conectamos la biblioteca windows.h.Es necesario que nuestra función convierta cadenas a otra codificación. Además, necesitamos una matriz simbólica adicional. El código fuente del programa se verá así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

#include "stdafx.h"
#Incluir.
#Incluir.
usando el espacio de nombres STD;
int main ()
(Setlocale (lc_all, "rus");
char S [255] \u003d ( "Necesito convertirme"} ;
char * pre \u003d nuevo char [255];
Charooeeema (s, pre); // transformar
cOUT.<< s;
eliminar pre;
sistema ("Pausa \u003e\u003e Void");
return 0;
}

El método se acaba de describir bastante no conveniente. Pero hay una solución más sencilla para el problema "ruso". Como puede ver, el programa utiliza la función SETLOCALE (), en su lugar, más conveniente para ingresar la función principal del siguiente diseño.



¿Te gustó el artículo? Compártelo