Me sale un error ¿por que?
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<fstream>
#include<sstream>
using namespace std;
string leer(string nombreArchivo,int linea){
string lineas;
ifstream archivo;
archivo.open(nombreArchivo.c_str(),ios::in);
int contador = 1;
if(archivo.fail()==true){ //Fallo al abrir el archivo
cout<<"No se pudo abrir el archivo..."<<endl;
cin.ignore(cin.rdbuf()->in_avail()+1);
exit(0); //Sale del programa
}
while(getline(nombreArchivo,lineas)){
if(contador == linea)
return lineas;
else{
contador++;
}
}
archivo.close();
}
int main(int argc,char *argv[]){
string nombreArchivo;
cout<<"Digite el nombre del archivo: ";
getline(cin,nombreArchivo);
cout<<leer(nombreArchivo,2)<<endl;
return 0;
}[code=cpp]
[/code]
Si te salta el error en la linea 19, prueba en vez de getline a usar el feof o eof del fichero y comentas el resultado.
while(!feof(nombreArchivo))
Un saludo!
¿Qué error te da el compilador?
Vale getline, en el primer argumento le pasas el nombre archivo cuando debes pasar su manejador. De igual forma debes reestructurar la función para que termine con un return. Algo así:
string leer(string nombreArchivo,int linea){
string lineas;
ifstream archivo;
archivo.open(nombreArchivo.c_str(),ios::in);
int contador = 1;
if(archivo.fail()==true){ //Fallo al abrir el archivo
cout<<"No se pudo abrir el archivo..."<<endl;
cin.ignore(cin.rdbuf()->in_avail()+1);
exit(0); //Sale del programa
}
while(getline(archivo,lineas)){
if(contador == linea)
break;
else{
contador++;
}
}
archivo.close();
return lineas;
}