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#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <vector>
using namespace std;
class BuscaNombres {
char Linea[1280];
string LineaString;
public:
void Cantidad(string &LineaString) {
int GuardaNum;
GuardaNum = LineaString.find_first_of("-");
LineaString = LineaString.substr(0,GuardaNum);
}
void Mostrar() {
vector<string> Archivo(0);
ifstream Lectura("Personas.txt");
Lectura.getline(Linea, 1280);
string LineaString = Linea;
Cantidad(LineaString);
Archivo.push_back(LineaString);
while (!Lectura.eof()) {
Lectura.getline(Linea, 1280);
string LineaString = Linea;
Cantidad(LineaString);
Archivo.push_back(LineaString);
}
}
Lectura.close();
// Comienza la lectura del vector Archivo:
for (int Nums = 0; Nums < Archivo.size(); Nums++)
cout << Archivo[Nums] << endl;
}
} Nombres;
int main() {
Nombres.Mostrar();
}
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.