Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Concatenar cadenas

Estas en el tema de Concatenar cadenas en el foro de C/C++ en Foros del Web. Soy nuevo en C++ y veo que la manera en que se manejan las cadenas difiere mucho de lo que conosco en otros lenguajes. Estoy ...
  #1 (permalink)  
Antiguo 29/05/2011, 02:45
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Concatenar cadenas

Soy nuevo en C++ y veo que la manera en que se manejan las cadenas difiere mucho de lo que conosco en otros lenguajes.

Estoy intentando crear una función en una aplicacion de consola y lo que quiero que haga es recibir una cadena y a esa cadena añadirle al inicio la cadena "Hola tu". Me he complicado mucho creo, no se cuan sencillo sea. Recien estoy aprendiedo a usar punteros correctamente.

Asi tengo la función:

char Pb1 (char *string2)
{
char *string1 = "Hola tu";
char *string3 = "";

strcpy(string3, string1);
strcat(string3, string2);

return *string3;
}

Y asi invoco al método:

char strPb1 = Pb1("Moshe Abraham");
cout << strPb1 << endl;

Cuando compilo solo me sale un par de adventencias para cambiar las funciones strcpy y strcat por strcpy_s y strcat_s, pero solo cuando no invoco al metodo, porque cuando lo hago me sale un error interno a la hora de hacer el debug que no tengo manera de averiguar.

De antemano muchas gracias.
  #2 (permalink)  
Antiguo 29/05/2011, 10:32
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 11
Respuesta: Concatenar cadenas

Tu programa es algo "tonto", pero supongo que es porque estás aprendiendo, me explico, sería mucho mas facil hacer 'cout << "Hola tu " << string << endl;' donde string es la cadena que recibes.

El trabajo con funciones con parámetros en char[ ] puede ser muy engorroso, te aconsejo que uses strings, que, para concatenarlos vasta con "sumarlos".
Te dejo aqui tu funcion con strings:
Código C++:
Ver original
  1. #include <string.h>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. string Pb1 (string string2){
  6.     string string1 = "Hola tu ";
  7.  
  8.     string1 += string2;
  9.  
  10.     return string1;
  11. }
  12.  
  13. int main(){
  14.     string strPb1 = Pb1("Moshe Abraham");
  15.     cout << strPb1 << endl;
  16.     return 0;
  17. }

Un saludo!
  #3 (permalink)  
Antiguo 29/05/2011, 12:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Concatenar cadenas

Al hacerlo como me indicas obtengo el siguiente error al ejecutar:

Error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

Estoy trabajando en un Win32 Console Application en blanco donde cree una clase en blanco y puse el codigo. EL error indica que ocurre a la hora de imprimir es decir en:

cout << strPb1 << endl;

Muchas gracias por tu ayuda.
  #4 (permalink)  
Antiguo 29/05/2011, 12:17
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Concatenar cadenas

Creo que solucioné el problema, o no se si era un problema. Al parecer la libreria que incluyes <string.h> no me permite trabajar de esta manera, por eso solo incluí <string>. No se exactamente cual es la diferencia de ambas en C++ y porque es que cout no puede imprimir la variable cuando se usa <string.h>.
  #5 (permalink)  
Antiguo 29/05/2011, 13:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 11
Respuesta: Concatenar cadenas

Pues no tengo ni idea, yo siempre he usado <string.h> en mi ordenador y nunca me ha dado ningun tipo de problemas (antes de poner mi codigo lo probé).
Yo para programar uso Codeblocks en Ubuntu 11.04 xD
  #6 (permalink)  
Antiguo 29/05/2011, 13:15
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Concatenar cadenas

Pues eso pensé que quizas era por por el IDE o el compilador que usamos y las versiones, yo uso Windows Vista y Visual Studio 2008. Muchas gracias por tu ayuda.

Etiquetas: cadenas, concatenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:08.