Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/05/2014, 23:11
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Leer palabras de una linea de un fichero

Hola Alvarocq!

Bueno estube haciendo el código que necesitás y lo logré
Lo que si tené en cuenta algo importante, para que el código pueda funcionar perfectamente, debés agregar un signo - luego de ingresar la cantidad de idiomas de cada persona.
Esto lo hice así y siempre lo hice y me funciona perfectamente, porque para mí es una manera fácil de llegar desde un X valor a otro, esos signos o símbolos, me ayudan siempre!!!

El archivo debe llamarse Personas.txt y debe estar en el mismo directorio/carpeta que el programa C++.

Adentro del archivo Personas.txt agregá así a las personas:

PEPE 2- IDIOMA1 IDIOMA2
JOSE 1- IDIOMA1
ALEJANDRO 4- IDIOMA1 IDIOMA2 IDIOMA3 IDIOMA4



Y con un salto de línea al final del archivo, osea que debe quedar siempre una línea vacía en la última línea del archivo Personas.txt, recordá que el nombre del archivo es Personas y la extensión .txt:

Aquí está el código:

Código C++:
Ver original
  1. #include <windows.h>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <fstream>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9.  
  10. class BuscaNombres {
  11.     char Linea[1280];
  12.     string LineaString;
  13.  
  14. public:
  15.     void Cantidad(string &LineaString) {
  16.         int GuardaNum;
  17.         GuardaNum = LineaString.find_first_of("-");
  18.         LineaString = LineaString.substr(0,GuardaNum);
  19.     }
  20.     void Mostrar() {
  21.         vector<string> Archivo(0);
  22.         ifstream Lectura("Personas.txt");
  23.         Lectura.getline(Linea, 1280);
  24.         string LineaString = Linea;
  25.         Cantidad(LineaString);
  26.         Archivo.push_back(LineaString);
  27.         while (!Lectura.eof()) {
  28.             Lectura.getline(Linea, 1280);
  29.                 if (strlen(Linea) != 0) {
  30.                     string LineaString = Linea;
  31.                     Cantidad(LineaString);
  32.                     Archivo.push_back(LineaString);
  33.             }
  34.         }
  35.         Lectura.close();
  36.         // Comienza la lectura del vector Archivo:
  37.         for (int Nums = 0; Nums < Archivo.size(); Nums++)
  38.             cout << Archivo[Nums] << endl;
  39.     }
  40. } Nombres;
  41.  
  42. int main() {
  43.     Nombres.Mostrar();
  44. }

El programa lee el archivo dentro de una clase como vos querías. La clase es publica

Buena suerte!!

PD: Podés cambiar el nombre de archivo por el que vos desees.