C++ tiene en su definición una forma de representar un secuencia de caracteres como objeto de la clase . Esta clase se llama std::string. La clase string almacena los caracteres como una secuencia de bytes con la funcionalidad de permitir acceso al carácter de un solo byte .
Cadena vs matriz de caracteres
Cadena | Matriz de caracteres |
|---|---|
| Una cuerda es un clase que define objetos que se representará como una corriente de personajes. | Una matriz de caracteres es simplemente una variedad de personajes que puede terminar con un carácter nulo. |
| En el caso de cadenas la memoria es asignado dinámicamente . Se puede asignar más memoria en tiempo de ejecución según demanda. Como no hay memoria preasignada no se desperdicia memoria . | El tamaño de la matriz de caracteres debe ser asignado estáticamente No se puede asignar más memoria en tiempo de ejecución si es necesario. Asignado no utilizado La memoria también se desperdicia. |
| Como las cadenas se representan como objetos. sin decadencia de matriz ocurre. | hay un amenaza de decaimiento de matriz en el caso de la matriz de caracteres. |
| Las cuerdas son más lentas. en comparación con la implementación que la matriz de caracteres. | Implementación de la matriz de caracteres es más rápida que std:: cadena. |
| La clase de cadena define una serie de funcionalidades que permiten múltiples operaciones sobre cadenas. | matrices de caracteres no ofrecer muchos funciones incorporadas para manipular cuerdas. |
Operaciones sobre cuerdas
1) Funciones de entrada
| Función | Definición |
|---|---|
| obtener línea() | Esta función se utiliza para almacenar un flujo de caracteres ingresados por el usuario en la memoria del objeto. |
| empujar_back() | Esta función se utiliza para ingresar un carácter al final de la cadena. |
| pop_back() | Introducida desde C++ 11 (para cadenas), esta función se utiliza para eliminar el último carácter de la cadena. |
Ejemplo:
CPP// C++ Program to demonstrate the working of // getline() push_back() and pop_back() #include #include // for string class using namespace std; // Driver Code int main() { // Declaring string string str; // Taking string input using getline() getline(cin str); // Displaying string cout << 'The initial string is : '; cout << str << endl; // Inserting a character str.push_back('s'); // Displaying string cout << 'The string after push_back operation is : '; cout << str << endl; // Deleting a character str.pop_back(); // Displaying string cout << 'The string after pop_back operation is : '; cout << str << endl; return 0; }
Producción
The initial string is : The string after push_back operation is : s The string after pop_back operation is :
Complejidad del tiempo: O(1)
Complejidad espacial: O (n) donde n es el tamaño de la cuerda
2) Funciones de capacidad
| Función | Definición |
|---|---|
| capacidad() | Esta función devuelve la capacidad asignada a la cadena que puede ser igual o mayor que el tamaño de la cadena. Se asigna espacio adicional para que cuando se agreguen nuevos caracteres a la cadena las operaciones se puedan realizar de manera eficiente. |
| cambiar tamaño() | Esta función cambia el tamaño de la cadena; el tamaño se puede aumentar o disminuir. |
| longitud() | Esta función encuentra la longitud de la cadena. |
| encoger_para_adaptar() | Esta función disminuye la capacidad de la cadena y la iguala a la capacidad mínima de la cadena. Esta operación es útil para ahorrar memoria adicional si estamos seguros de que no es necesario realizar más caracteres. |
Ejemplo:
CPP// C++ Program to demonstrate the working of // capacity() resize() and shrink_to_fit() #include #include // for string class using namespace std; // Driver Code int main() { // Initializing string string str = 'geeksforgeeks is for geeks'; // Displaying string cout << 'The initial string is : '; cout << str << endl; // Resizing string using resize() str.resize(13); // Displaying string cout << 'The string after resize operation is : '; cout << str << endl; // Displaying capacity of string cout << 'The capacity of string is : '; cout << str.capacity() << endl; // Displaying length of the string cout << 'The length of the string is :' << str.length() << endl; // Decreasing the capacity of string // using shrink_to_fit() str.shrink_to_fit(); // Displaying string cout << 'The new capacity after shrinking is : '; cout << str.capacity() << endl; return 0; }
Producción
The initial string is : geeksforgeeks is for geeks The string after resize operation is : geeksforgeeks The capacity of string is : 26 The length of the string is :13 The new capacity after shrinking is : 13
Complejidad del tiempo: O(1)
Complejidad espacial: O (n) donde n es el tamaño de la cuerda
3) Funciones de iterador
| Función | Definición |
|---|---|
| comenzar() | Esta función devuelve un iterador al principio de la cadena. |
| fin() | Esta función devuelve un iterador al final de la cadena. |
| comenzar() | Esta función devuelve un iterador inverso que apunta al final de la cadena. |
| prestar() | Esta función devuelve un iterador inverso que apunta al principio anterior de la cadena. |
| comenzar() | Esta función devuelve un iterador constante que apunta al comienzo de la cadena y no se puede utilizar para modificar el contenido al que apunta. |
| algunos() | Esta función devuelve un iterador constante que apunta al siguiente final de la cadena y no se puede utilizar para modificar el contenido al que apunta. |
| crbegin() | Esta función devuelve un iterador inverso constante que apunta al final de la cadena y no se puede utilizar para modificar el contenido al que apunta. |
| crédito() | Esta función devuelve un iterador inverso constante que apunta al principio anterior de la cadena y no se puede utilizar para modificar el contenido al que apunta. |
Algoritmo:
comando de retorno java
- Declarar una cadena
- Intente modificar el elemento de la cadena.
- Muestra todas las iteraciones.
Ejemplo:
CPP// C++ Program to demonstrate the working of // begin() end() rbegin() rend() cbegin() cend() crbegin() crend() #include #include // for string class using namespace std; // Driver Code int main() { // Initializing string` string str = 'geeksforgeeks'; // Declaring iterator std::string::iterator it; // Declaring reverse iterator std::string::reverse_iterator it1; cout<<'Str:'<<str<<'n'; // Displaying string cout << 'The string using forward iterators is : '; for (it = str.begin(); it != str.end(); it++){ if(it == str.begin()) *it='G'; cout << *it; } cout << endl; str = 'geeksforgeeks'; // Displaying reverse string cout << 'The reverse string using reverse iterators is ' ': '; for (it1 = str.rbegin(); it1 != str.rend(); it1++){ if(it1 == str.rbegin()) *it1='S'; cout << *it1; } cout << endl; str = 'geeksforgeeks'; //Displaying String cout<<'The string using constant forward iterator is :'; for(auto it2 = str.cbegin(); it2!=str.cend(); it2++){ //if(it2 == str.cbegin()) *it2='G'; //here modification is NOT Possible //error: assignment of read-only location //As it is a pointer to the const content but we can inc/dec-rement the iterator cout<<*it2; } cout<<'n'; str = 'geeksforgeeks'; //Displaying String in reverse cout<<'The reverse string using constant reverse iterator is :'; for(auto it3 = str.crbegin(); it3!=str.crend(); it3++){ //if(it2 == str.cbegin()) *it2='S'; //here modification is NOT Possible //error: assignment of read-only location //As it is a pointer to the const content but we can inc/dec-rement the iterator cout<<*it3; } cout<<'n'; return 0; } //Code modified by Balakrishnan R (rbkraj000)
Producción
Str:geeksforgeeks The string using forward iterators is : Geeksforgeeks The reverse string using reverse iterators is : Skeegrofskeeg The string using constant forward iterator is :geeksforgeeks The reverse string using constant reverse iterator is :skeegrofskeeg
Complejidad del tiempo: O(1)
Complejidad espacial: O (n) donde n es el tamaño de la cuerda
4) Funciones de manipulación:
| Función | Definición |
|---|---|
| copiar('matriz de caracteres' len pos) | Esta función copia la subcadena en la matriz de caracteres de destino mencionada en sus argumentos. Se necesitan 3 argumentos, la longitud de la matriz de caracteres de destino para copiar y la posición inicial en la cadena para comenzar a copiar. |
| intercambio() | Esta función intercambia una cadena con otra. |
Ejemplo:
CPP// C++ Program to demonstrate the working of // copy() and swap() #include #include // for string class using namespace std; // Driver Code int main() { // Initializing 1st string string str1 = 'geeksforgeeks is for geeks'; // Declaring 2nd string string str2 = 'geeksforgeeks rocks'; // Declaring character array char ch[80]; // using copy() to copy elements into char array // copies 'geeksforgeeks' str1.copy(ch 13 0); // Displaying char array cout << 'The new copied character array is : '; cout << ch << endl; // Displaying strings before swapping cout << 'The 1st string before swapping is : '; cout << str1 << endl; cout << 'The 2nd string before swapping is : '; cout << str2 << endl; // using swap() to swap string content str1.swap(str2); // Displaying strings after swapping cout << 'The 1st string after swapping is : '; cout << str1 << endl; cout << 'The 2nd string after swapping is : '; cout << str2 << endl; return 0; }
Producción
The new copied character array is : geeksforgeeks The 1st string before swapping is : geeksforgeeks is for geeks The 2nd string before swapping is : geeksforgeeks rocks The 1st string after swapping is : geeksforgeeks rocks The 2nd string after swapping is : geeksforgeeks is for geeks
Debe leer: Clase de cadena C++ y sus aplicaciones