Pasar cadena por referencia en c ++

Pasar cadena por referencia en c ++
La referencia de C ++ es un nombre para una variable que ya existe. No se puede alterar una referencia a una variable para referirse a la otra variable una vez inicializada. Los punteros o referencias se pueden pasar como parámetros a las funciones en c++. Por lo tanto, el resultado es idéntico en ambas circunstancias. La aprobación por referencia permite que una función actualice una variable sin crear una copia. Debemos declarar variables de referencia para que el parámetro y la variable se pasen para compartir la misma ubicación de memoria. Cualquier cambio que ocurra en el parámetro también afecte la variable.

Con la ayuda de ejemplos, comprenderemos el enfoque de referencia C ++ por referencia y cómo proporcionar punteros como argumentos a las funciones en este artículo. Los parámetros pasados ​​para funcionar como punteros son los mismos que cualquier otro valor al pasar un valor por referencia. Como resultado, debe proporcionar tipos de puntero para los argumentos de función, como en la función swap (), que intercambia los valores de varias variables enteras abordadas por sus argumentos.

Ejemplo 1: Programa de aprobación por referencia sin punteros en C++

Aquí, pasamos un valor por referencia sin utilizar la declaración del puntero. A continuación se muestra el programa de ilustración para pasar una variable por referencia.

Inicialmente, hemos incluido los archivos de encabezado para la implementación del programa en la sección del encabezado. En el siguiente paso, tenemos una definición de función para los valores de intercambio. La función tiene un intercambio de nombre, y la función toma dos referencias variables de cadena como parámetro. Las variables de cadena La función de intercambio se definirá como cadenas de referencia "str1" y "str2".

Luego, en la función, creamos una variable "temperatura", que pasamos la variable "str1". Después de eso, el "str2" se asigna a "str1", y luego "str2" tiene el "str2". De esta manera, el algoritmo de intercambio se aplica a la cadena de referencia.

Tenemos nuestra función principal donde se declaran dos cuerdas como "str_a" y "str_b" e inicializadas con algunos valores de cadena. Los valores de cadena se imprimirán antes de aplicar la función de intercambio. Luego, hemos invocado la función de intercambio en la función principal y pasamos la cadena definida en la función principal. Después de eso, la cadena intercambiada se imprimirá.

#incluir
usando el espacio de nombres STD;
Swap void (String & Str1, String & Str2)
cadena temp;
temp = str1;
str1 = str2;
str2 = temp;

int main ()

cadena str_a = "c ++", str_b = "programación";
cout<< "Strings Before swapping" <cout<< "string 1 : " <cout<< "String 2 : " <intercambio (str_a, str_b);
cout<< "\nStrings After swapping" <cout<< "string 1 : " <cout<< "string 2 : " <regresar 0;

El resultado muestra la cadena antes de intercambiar y después de intercambiar la cadena de referencia pasada en la función.

Ejemplo 2: Programa de aprobación por referencia con punteros en C++

Como en el ejemplo anterior, solo hemos visto la cadena de pase por referencia. Por lo tanto, usaremos punteros por referencia en C ++ en este ejemplo.

El programa comienza creando una función que se representa con el nombre de "swapstring" y pasa las cadenas de dos puntos como argumento. Luego, hemos llamado a la función principal del programa. En la función principal, las dos cadenas se denominan "str1" y "str2", respectivamente. Estas variables de cadena se inicializan con la cadena de palabras.

Luego, hemos llamado a la función "Swapstring", a las que se pasan las variables de cadena "Str1" y "Str2". Las cadenas se intercambiarán en esta definición de función en la función principal e impresas. Después de eso, hemos llamado a la función "intercambio" fuera de la función principal para intercambiar las cadenas especificadas.

#incluir
usando el espacio de nombres STD;
void swapstring (cadena*, cadena*);
int main ()

cadena str1 = "hola", str2 = "amigos";
cout<< "Strings Before swapping" <cout<< "Str1 = " << str1 <cout<< "Str2 = " << str2<Swapstring (& str1, & str2);
cout<< "\nStrings After swapping" <cout<< "str1 = " << str1 <cout<< "str2 = " << str2 <regresar 0;

void swapstring (string* s1, string* s2)
cadena temp;
temp = *S1;
*S1 = *S2;
*s2 = temp;

Por lo tanto, los resultados de las referencias de cadena de paso con punteros se muestran en el siguiente gráfico.

Ejemplo 3: Programa de pasar objeto de cadena por referencia en c++

Incluso si una función no puede modificar el objeto de cadena de origen en el programa de llamadas, pasar objetos de cadena C ++ a través de referencia es bastante común. Los objetos suelen ser bastante grandes y, por lo tanto, se puede comparar con la cantidad de almacenamiento que usan y el tiempo necesario para construir un clon de ellos al pasarlos por valor. Entonces, en general, el paso de los objetos por referencia guarda la memoria y el tiempo.

La única desventaja de pasar un objeto a través de la referencia es que puede alterar el objeto de origen que se pasó a la función. Que no se desea. Si no queremos actualizar un objeto en la función, preferiríamos dificultar.

Tenemos una definición de función en el siguiente programa como "InputString", a la que pasamos la referencia de cadena. Luego, hemos declarado un objeto de cadena "mystr" en la función principal y la cadena de objeto "mystr" contiene una cadena de una palabra.

Después de eso, llamamos a un "inputstring" y pasamos este objeto de cadena en él. Tenemos una definición de función "InputString" fuera de la función principal, que crea una nueva referencia de objeto de cadena de "mystr". La nueva cadena se define como "Newstr" y luego se inicializa en el cuerpo de la función. Hemos modificado la cadena de objeto "Newstr" e imprimimos el nuevo objeto de cadena.

#incluir
#incluir
usando std :: cout;
usando std :: endl;
usando std :: string;
void inputString (String &);
int main ()

cadena mystr = "wel";
cout<< "String value: " <InputString (mystr);
cout<< "String value now :" <regresar 0;

Void InputString (String & Newstr)

cout<< "String value in function :" <Newstr = Newstr + "Come";
cout<< "String value now in function :" <

El siguiente gráfico representa los valores de cadena resultantes de la cadena de origen y cambió de cadena.

Ejemplo 4: programa de pasar un objeto de cadena constante por referencia en c++

El compilador arrojará una falla si se pasa una referencia al objeto constante. Podemos abordar este problema utilizando una referencia variable constante. Esto evita la variable a la que se cambian los puntos de referencia.

Primero, tenemos la definición de función "DisplayString", donde se pasa una referencia de cadena constante. Las cadenas constantes se definen e inicializan en la función principal como "str1" y "str2". Después de eso, pase estas cadenas constantes a la función "InputString". Invocó la función fuera de la función principal donde hemos declarado una variable de cadena constante "mystr".

#incluir
#incluir
usando std :: cout;
usando std :: endl;
usando std :: string;
void displaystring (const string &);
int main ()

const string str1 = "infinix";
cadena str2 = "iPhone";
cout<< "str1 :" << str1 <DisplayString (STR1);
cout<< "str2 : " << str2 <DisplayString (str2);
regresar 0;

void displaystring (const string y mystr)

cout<< "MyStr : " <

Un objeto no constante se pasa a una función a través de una referencia de objeto constante. Para que no recibamos ningún error de compilación en el código.

Conclusión

Las referencias permiten que una función afecte el valor de un argumento, que puede ser beneficioso en algunas situaciones. Las referencias const, en contraste, aseguran que la función no cambie el argumento. Por lo tanto, hemos concluido el artículo aquí con la demostración de ejemplo en C ++ y esperamos que sea útil.