Todo lo que necesita saber sobre cadenas en C ++



Este artículo le proporcionará un conocimiento detallado y completo de las cadenas en C ++ y también proporcionará ejemplos de varias operaciones.

El término significa una secuencia ordenada de caracteres. Una secuencia de caracteres se puede representar utilizando un objeto de una clase en C ++. La clase que proporciona una definición para hacerlo se llama clase String. La clase String almacena los caracteres como una secuencia de bytes con la funcionalidad de permitir el acceso al carácter de un solo byte. En C ++, los delimitadores adjuntos son comillas dobles. En este artículo 'Cadenas en C ++', discutiré los siguientes temas:

Diferencia de clase de cadena y matriz de caracteres

Clase de cadena Matriz de caracteres
La clase String es una clase que define objetos que se pueden representar como un flujo de caracteres.La matriz de caracteres es simplemente una matriz de caracteres.
En el caso de las cadenas, la memoria se asigna dinámicamente, por lo que se puede asignar más memoria en tiempo de ejecución a pedidoEl tamaño de la matriz de caracteres debe asignarse estáticamente, por lo que no se puede asignar más memoria en tiempo de ejecución si es necesario
La clase String define una serie de funcionalidades que permiten múltiples operaciones en cadenas.La matriz de caracteres no ofrece muchas funciones integradas para manipular cadenas
Las cadenas son más lentas en comparación con la implementación que la matriz de caracteres.La implementación de una matriz de caracteres es Más rápido.

Declarar e inicializar cadenas en C ++

strings-in-c++La inicialización de una cadena en C ++ es bastante simple. Podemos utilizar cualquiera de los siguientes métodos.





usando el espacio de nombres std string std_string

o

std :: cadena std_string
#incluir usando el espacio de nombres std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hola por st' std :: string std_st = 'Hola por std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Salida:



Hola por ch Hola por st Hola por std_st

En este ejemplo, hemos mostrado tanto la matriz de caracteres (ch) como la cadena clAss (st y std_st) métodos de inicialización. Primero, usamos el método de matriz de caracteres definiendo una matriz de caracteres ch [12] que contiene 12 elementos y termina con un carácter nulo. En la segunda parte, usamos un método de clase de cadena.

Operaciones sobre cadenas en C ++

La ventaja de usar la clase de cadena es que hay varias funciones integradas en C ++ para manipularlas. Esto hace que la programación sea fácil y eficaz. Tomemos ciertas funciones importantes de manipulación de cadenas y comprendamos con algunos ejemplos.

Tamaño de cadena: Se pueden usar los métodos size () y length () para devolver el tamaño del objeto.



costo<< st.length() <

Salida:

11 11

Concatenación de cadenas: Podemos concatenar dos o más cadenas simplemente usando el operador + entre ellas

string new_string = st + 'y' + std_st cout<< new_string <

Salida:

Hola por st y hola por std_st

Añadiendo cadenas: La función de miembro de clase .append (cadena) se puede utilizar para concatenar y agregar una cadena en una ubicación de carácter específica en la cadena. Si un programador pone str.append (str1, p, n), entonces significa que n números de caracteres de la posición p en la cadena str1 se agregarán al final de str.

string str = 'Disfruto aprendiendo' string str1 = 'Python, C ++ o C' str.append (str1, 8, 3) cout<< str << endl

Salida:

Disfruto aprendiendo C ++

Buscando cadenas: Podemos usar la función miembro find () para encontrar la primera aparición de una cadena dentro de otra. find () buscará una aguja de hilo dentro del pajar de hilo a partir de la posición pos y devolverá la posición de la primera aparición de la aguja. La función rfind () funciona de manera similar, excepto que devuelve la última aparición de la cadena pasada.

cuál es la etiqueta span en html
string haystack = '¡Hola mundo!' aguja de hilo = 'o' cout<< haystack.find(needle)<

Salida:

4 4 7 4294967295

El primer comando cout simplemente imprimirá '4', que es el índice de la primera aparición de 'o' en la cadena del pajar. Si queremos la 'o' en 'Mundo', necesitamos modificar 'pos' para que apunte más allá de la primera aparición. haystack.find (aguja, 4) volvería a devolver 4, mientras que haystack.find (aguja, 5) daría 7. Si no se encuentra la subcadena, find () devuelve std :: string :: npos.

Npos es un valor especial igual al valor máximo representable por el tipo size_type. Aquí es 4294967295. Generalmente, se utiliza como indicador de fin de cadena por las funciones que esperan un índice de cadena o como indicador de error por las funciones que devuelven un índice de cadena.

Este código simple busca en una cadena todas las apariciones de 'C ++' en str2 e imprime sus posiciones:

string str2 = 'C ++ es un lenguaje de programación orientado a objetos e incluye clases, herencia, polimorfismo, abstracción y encapsulación de datos. C ++ permite el manejo de excepciones y la sobrecarga de funciones que no son posibles en C.C ++ es un lenguaje poderoso, eficiente y rápido. ' for (string :: size_type i = 0, tfind (tfind = wikistr.find ('C ++', i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Salida:

Ocurrencia encontrada de 'C ++' en la posición 0 Ocurrencia encontrada de 'C ++' en la posición 132 Ocurrencia encontrada de 'C ++' en la posición 217
#incluir usando el espacio de nombres std class base {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // Enlace tardío (RTP) ptr-> fun_3 () // Enlace tardío (RTP) ptr-> fun_4 () // Enlace temprano pero esta llamada de función es // ilegal (produce error) porque el puntero // es de tipo base y función es de // clase derivada // p-> fun_4 (5)}

Salida:

función de clase base 1 función de clase derivada 2 función de clase base 3 función de clase base 4

Con esto, llegamos al final de este artículo sobre cadenas en C ++. Espero que comprenda las diversas operaciones que se pueden realizar en él. Si desea obtener más información, consulte la capacitación en Java de Edureka, una empresa confiable de aprendizaje en línea. Edureka's El curso de capacitación y certificación está diseñado para capacitarlo en conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog y nos pondremos en contacto con usted lo antes posible.