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

leer fichero con c++

Estas en el tema de leer fichero con c++ en el foro de C/C++ en Foros del Web. hola, tengo el siguiente problema que no se como resolver. Dado un fichero "nombres.txt" que contiene, por ejemplo: Javi Luis Maria Pedro Alberto Cris Ana ...
  #1 (permalink)  
Antiguo 15/03/2007, 22:23
 
Fecha de Ingreso: marzo-2007
Mensajes: 4
Antigüedad: 17 años, 1 mes
Puntos: 0
leer fichero con c++

hola,
tengo el siguiente problema que no se como resolver.
Dado un fichero "nombres.txt" que contiene, por ejemplo:

Javi Luis
Maria Pedro
Alberto Cris
Ana Tomas

(siempre sigue el mismo formato, 2 nombres por línea y el número de líneas puede ser variable)

Quiero que el programa (escrito en C++) pueda leer cada uno de los nombres y guardarlos cada uno en un espacio de memoria diferente. Por ejemplo:
1=Javi
2=Luis
3=Maria
etc.

Alguien me puede ayudar?

Gracias
  #2 (permalink)  
Antiguo 18/03/2007, 21:44
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
Re: leer fichero con c++

para leer el archivo en C++, esta es mi forma favorita......

Código:
// estructura que contenga la cantidad de nombres por linea, si fueran mas, solo vas agregando
struct CNames
{
	std::string a,b;
};

// sobrecargamos el operador >> para cortar un poco de codigo
istream& operator>>(istream& is, CNames& n) {
  return is >> n.a >> n.b;
}

// metodo que lee el archivo
void ReaderFile(string strName )
{	

	// vector que contendra la lista de nombres
       std::vector<CNames> vNames;
       
       // abres el archivo y verificas si hay error
	std::ifstream in(strName);
        if( !in )
        { // error }
            
	std::string line;
	CNames name;
	while( std::getline(in, line ) )
	{
		// checas si pudo leer los 2 nombres
               if( std::stringstream(line) >> name)
                        { // si es asi, los agregas a la lista			                                      

                           vNames.push_back(name);
                         }
	}

	in.close(); // cierras el archivo

        // aqui los mande a imprimir para ver que si leyo todo
	for( int i = 0; i < vNames.size(); i++ )
	{
		std::cout << vNames[i].a << endl;
		std::cout << vNames[i].b << endl;
	}	

}
ya con eso tiene una lista con todos los nombres por separado, solo seria cuestion de que los guardes en un archivo, lo cual ya es una tarea muchisimo mas sencilla....

p.d: normalmente no hubiera puesto el codigo, pero esta forma me parece bastante sencilla y optima, y la quise compartir por si a alguien le gusta, ademas de que con minimas modificaciones puede adaptarse para archivos mas complejos, por ejemplo que contega en una linea (aleatoria) muchos numeros, en otra un string...etc....

saludos,

Última edición por blackwind; 18/03/2007 a las 21:49
  #3 (permalink)  
Antiguo 19/03/2007, 08:56
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: leer fichero con c++

Jajajajajaja. Muy ironico.
Blackwind, esta bastante bien tu codigo...con eso de que apenas le ando dando a las plantillas y a la STL... sirve mucho.
Saludos
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 03:03.