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

problema con Getline...

Estas en el tema de problema con Getline... en el foro de C/C++ en Foros del Web. hola a todos le comento que quiero hacer un programa que el usuario le ingrese una fecha por teclado y yo buscarla en mi archivo ...
  #1 (permalink)  
Antiguo 15/09/2010, 15:11
 
Fecha de Ingreso: mayo-2010
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
problema con Getline...

hola a todos le comento que quiero hacer un programa que el usuario le ingrese una fecha por teclado y yo buscarla en mi archivo txt que es asi:

01/01/2010 10.cm
02/01/2010 20.cm
03/01/2010 30.cm
04/01/2010 40.cm

y si la fecha es correcta le imprimo cuanto llovió esa fecha (es medio irreal por que no llueve siempre pero quiero poder hacerlo funcionar :metal:)

no lo pude usar al getline le meti ...no se que hago mal...
les dejo el codigo para que lo puedas mirar u si es posible ayudarme..muchas gracias a todos!

#include <cstdlib>
#include <stdio.h>
#include <iostream>
#include <istream>
#include <string>


using namespace std;

int main() {


char dia [20], mes [20], ano [40];
string linea;

FILE *temp;
temp = fopen ("Temp2.txt", "r");

cout << "Ingrese el DIA que decea buscar:";
cin >> dia;
cout << "Ingrese el MES que decea buscar:";
cin >> mes;
cout << "Ingrese el AÑO que decea buscar:";
cin >> ano;

while ( ! feof (temp) ){

// probé de todas formas, estas son algunas pero siempre me tira algun error...

temp.getline(linea,sizeof(linea))
getline (temp, linea);
getline (temp, 2);

-----------------------------------Errores------------------------------------------------------
|In function 'int main()':|
|error: request for member 'getline' in 'temp', which is of non-class type 'FILE*'|
|error: no matching function for call to 'getline(FILE*&, char [11])'|
||=== Build finished: 2 errors, 0 warnings ===|


if (*linea == *dia ) {
i=3; //aca lo pense con fgets pero no solo me compara la el primer numero no se que onda
fseek(temp, i, SEEK_SET);
fgets (linea , 2 , temp);
}
if (*linea == *mes ) {
i=6;
fseek(temp, i, SEEK_SET);
fgets (linea , 4 , temp);
}
if (*linea == *ano ) {
i=11;
fseek(temp, i, SEEK_SET);
fgets (linea , 20 , temp);
cout << "El promedio de lluvia del dia ingresado es-- > " << linea << "\n";
break;
}else{
cout << "La Fecha Ingresada NO existe!!!"<<"\n""\n";
break;

}



}
fclose (temp);
system("pause");
return 0;
}
  #2 (permalink)  
Antiguo 15/09/2010, 16:18
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 17 años, 1 mes
Puntos: 3
Respuesta: problema con Getline...

Hola,

El problema es que estas mesclando el C y el C++.
El tipo FILE es una estructura del estandar C (definido en <stdio.h>).
Luego cuando haces temp.getline, eso es c++. getline() es una funcion miembre de los streams (flujos) del estandar C++ (definido en <iostream>).
Supongo que querias utilizar la funcion getline del C, pero tambien utilisas lo string (definido en <string>) los cin y cout que son objetos de tipo stream del estandar c++.

Yo creo que lo que tienes que hacer, es quitar los include del C, es decir <cstdlib> y <stdio.h>, y volver a despurar.
O sino, quitas los includes del c++, es decir <iostream>, <istream> (este de todas formas no sirve porque ya esta incluido por iostream), y <string> (en vez de este, utilizas el cstring.h).

Lo que estoy intentando decir, es que estas mesclando el C y el C++, y eso no puede ser bueno para empezar (luego, una vez que se sabe de que va, puede ser util mesclar los dos; pero antes, hay que saber de que va).

Tienes que eligir un lenguaje o el otro.
__________________
Alicia: Sólo quiero saber que camino debo tomar.
Gato risón: Pues... depende mucho de donde quieras ir.

Mi página web
  #3 (permalink)  
Antiguo 17/09/2010, 10:39
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con Getline...

Sin dejar de estar de acuerdo con lo que menciona r0d, el error particular que aparece es porque estás accediendo como temp.getline pero temp no es una estructura, es un puntero (que a su vez apunta a una estructura, pero eso es otro tema).

En ese caso tenés que usar (*temp).getline, o temp->getline.


Saludos.

Etiquetas: getline
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 04:22.