elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre error
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre error  (Leído 1,372 veces)
comemelguevo

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Duda sobre error
« en: 17 Enero 2016, 17:24 pm »

Hola buenas al escribir una función de leer un fichero con datos tipo subtítulo me da un error en los getline(), y pone

error: no matching function for call to 'std::basic_ifstream<char>::getline(char [80])'
     f.getline(texto);
Os dejo el programa:

void leerSubtitulos (const char nombreFichero[], Subtitulo S[]){
   const int MAX_LONG_LINEA = 80;  
   const int MAX_LINEAS = 3;
   ifstream f;
   f.open(nombreFichero);
   if(f.is_open()){
      for(int i = 0; i<contarSubtitulos(nombreFichero); i++){
         int hour,min,segs,mil_segs,numero,nLineas=0;
         char aux;
         Tiempo inicio,fin;
         f >> numero >> hour >> aux >> min >> aux >> segs >> aux >> mil_segs;
         inicio = definir(hour*3600+min*60+segs,mil_segs);
         aux = f.get(); aux = f.get(); aux = f.get(); aux = f.get();; aux = f.get();
         f >> hour >> aux >> min >> aux >> segs >> aux >> mil_segs;
         fin = definir(hour*3600+min*60+segs,mil_segs);
         f.getline();
         char texto[MAX_LINEAS][MAX_LONG_LINEA];
         for(int i = 0; i<MAX_LINEAS; i++){
            f.getline(texto);
            nLineas++;
         }
         S = definir(numero, nLineas, texto, inicio, fin);
      }
   }
   else{
      cerr << "No se ha podido abrir" << endl;
   }
}




En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Duda sobre error
« Respuesta #1 en: 18 Enero 2016, 00:15 am »

El método de la clase ifstream getline, según los estándares, está definido así:
Código
  1. istream& getline (char* s, streamsize n );
  2. istream& getline (char* s, streamsize n, char delim );

Tiene dos sobrecargas, y ninguna coincide con la que has usado. Para solucionarlo, tienes que poner el tamaño de la cadena de caracteres como parámetro:

Código
  1. f.getline(texto[i], MAX_LONG_LINEA)

He deducido que deberías poner texto por el for en el que está:

Código
  1. for(int i = 0; i<MAX_LINEAS; i++){
  2.    f.getline(texto[i], MAX_LONG_LINEA);
  3.    nLineas++;
  4. }


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(duda sobre este foro) ¿Se puede poner links sobre programación?
Sugerencias y dudas sobre el Foro
Seyro97 5 4,045 Último mensaje 6 Febrero 2015, 17:55 pm
por el-brujo
Duda Urgente sobre error de definiciones de constantes en C++!!
Programación C/C++
flaurens 4 2,324 Último mensaje 24 Mayo 2015, 23:14 pm
por kub0x
Duda sobre un error en java
Java
elbrujo20 2 2,624 Último mensaje 26 Mayo 2015, 04:23 am
por 0xFer
Duda/Error sobre arrays (vectores)
Programación C/C++
Ikuza 1 1,714 Último mensaje 2 Diciembre 2015, 15:03 pm
por class_OpenGL
duda sobre un error
Java
elbrujo20 1 1,326 Último mensaje 6 Mayo 2016, 04:52 am
por + 1 Oculto(s)
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines