Error en tiempo de ejecución

Iniciado por antkk, 29 Marzo 2015, 13:21 PM

0 Miembros y 1 Visitante están viendo este tema.

antkk

Buenas, tengo un problema en tiempo de ejecución de mi programa.

Voy a escribir aquí lo que me sucede cuando estoy ejecutando el programa:

esteganografia
1 - Ocultar
2 - Revelar
3 - Salir
Seleccione una opcion: 1
Introduzca la imagen de entrada: terminate called after throwing an instance of 'std::ios_base::failure'
 what():  basic_filebuf::underflow error reading the file
Abortado (`core' generado)[/i
]



Aquí el código:

while(seguir){

   cout << "esteganografia\n";
   cout << "1 - Ocultar\n";
   cout << "2 - Revelar\n";
   cout << "3 - Salir\n";
   cout << "Seleccione una opcion: ";
   cin >> opcion;

   switch(opcion){
      case 1:
         cout << "Introduzca la imagen de entrada: ";
         // Creo que aquí está el principal error ya que no me
                       // deja leer el nombre del archivo.
                       cin.getline(nombre_imagen,MAXNOMBRE);
         strcat(directorio,nombre_imagen);
         // Creo que el error se produce por el cin.getline...   
         if(origen.leerImagen(directorio)){
            cout << "\nImagen leida correctamente. ";
            cin.ignore();
            cout << "\nIntroduzca la imagen de salida: ";
            cin.getline(nombre_imagen,MAXNOMBRE);
         destino.crear(origen.filas(),origen.columnas());


He dejado dos comentarios para que sepáis a mi parecer donde están los errores. Un saludo




ivancea96

Nombre_imagen es un char*, y MAX... es un entero?
Pon sus declaraciones.

También puedes usar getline(cin,string) para leer la entrada en una string.

antkk

Creo que he encontrado el error. Después de introducir el 1 del menú de opciones y darle al enter el cin.getline(...) se traga el enter y da error. He introducido antes del cin.getline un cin.ignore()

Gracias de todas formas por tu comentario.