• Domingo 15 de Diciembre de 2024, 20:48

Autor Tema:  Problemas Con Strings En C++  (Leído 1307 veces)

mangelprap

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Problemas Con Strings En C++
« en: Viernes 12 de Octubre de 2007, 15:45 »
0
Problemas con la siguiente función, el caso es que antes de finalizar el programa que utiliza esta clase, accede a una posicion de memoria que no toca y claro falla!!!  

void Palabra::leer_palabra ()
{
   letras.clear();
   char c=readchar();
   while (not esSeparador (cin.peek (), MARCAFINAL))
     {
       char c=readchar();
       letras += c;
     }
}

bool esSeparador (char c, char m)
 if (c==m) return false;
 return (!(((47 < c) && (c < 58)) ||   //numeros
      ((64 < c) && (c < 91)) ||   //majuscules
      ((96 < c) && (c < 123))));   //minuscules
}
letras es un string, declarado en el .hpp. A ver si alguien ve el error... Gracias!!!

Karman

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
    • http://www.inexinferis.com.ar
Re: Problemas Con Strings En C++
« Respuesta #1 en: Viernes 12 de Octubre de 2007, 18:02 »
0
1º si no me equivoco el operador "+=" sirve para concatenar strings y no  chars, (no estoy seguro), pero se me hace que tu error podría estar ahí cuando busca el fin de línea empieza a leer memoria contigua que no pertenece a la variable.

Prueba así:

Código: Text
  1.  
  2.  char c[]={0,0};
  3.  c[0]=readchar();
  4.  while (not esSeparador (cin.peek (), MARCAFINAL))
  5.  {
  6.     c[0]=readchar();
  7.     letras += c;
  8.  }
  9. }
  10.  
  11.  

S2

mangelprap

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Problemas Con Strings En C++
« Respuesta #2 en: Viernes 12 de Octubre de 2007, 18:53 »
0
Ya esta resuelto.
Al final la función era correcta. El problema era que hacia el include .hpp de la versión anterior. Y por ahi, venia el fallo. Despiste tonto!!!

Gracias, de todas formas, !!! Y doy por cerrado el post .