[C++] Uso de <vector>

Iniciado por MeCraniDOS, 22 Junio 2013, 19:16 PM

0 Miembros y 1 Visitante están viendo este tema.

MeCraniDOS

Cita de: amchacon en 25 Junio 2013, 15:57 PM
Simplemente pasa ese nombre:

Código (cpp) [Seleccionar]
cout << endl << " Procesando " << FileNames[opt] << endl;

El problema es que no se como pasarlo TT

Si alguien me puede decir como hacerlo..  :-\ :-\
"La física es el sistema operativo del Universo"
     -- Steven R Garman

ecfisa

Hola MeCraniDOS.

A ver si en líneas generales entendí lo que buscas...

Código (cpp) [Seleccionar]

#include<iostream>
#include<fstream>
#include <vector>
#include <string>
#include <windows.h>

using namespace std;

typedef vector <string> vFileNames;

bool GetFileNames(string Ruta, string Ext, vFileNames &v);
void ShowFileNames(vFileNames v);
string Listar_Archivos();
void Leer_Archivo(string aFileName);

int main()
{
  char Letra = 'S';
  string Nombre_Archivo; //Variable para el archivo a leer

  while (Letra == 'S') {
    Nombre_Archivo = Listar_Archivos();
    if (Nombre_Archivo.empty()) {
      cout<<" No se encontraron archivos!";
      cin.get(); // Pausa
      return -1; // Finaliza el programa con error
    }
    Leer_Archivo(Nombre_Archivo);
    cout <<"Desea intentar repetir la operacion? (S/N)";
    cin >> Letra;
  }
}

bool GetFileNames(string Ruta, string Ext, vFileNames &v)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile(((string)Ruta+Ext).c_str(), &FindFileData);

if (hFind == INVALID_HANDLE_VALUE)
   return false;
do
   v.push_back(Ruta+FindFileData.cFileName);
while (FindNextFile(hFind, &FindFileData));
FindClose(hFind);
return true;
}

void ShowFileNames(vFileNames v)
{
for(unsigned i = 0; i < v.size(); i++)
   cout << i << ".- " << v[i] << endl;
}

string Listar_Archivos()
{
  vFileNames FileNames;
  string rta= "C:\\", ext="*.txt";
  int opt;

  if (GetFileNames(rta, ext, FileNames)) {
    ShowFileNames(FileNames);
    cout << "\n Selecciona un archivo (0-" << FileNames.size()-1 << ") ";
    cin >> opt;
    cout << endl << " Procesando " << FileNames[opt] << endl;
    return FileNames[opt];
  } else
    return "";
}

void Leer_Archivo(string aFileName)
{
  string line;
  ifstream arch(aFileName.c_str(), ifstream::in);
  if (arch.is_open())  {
    while (arch.good()) {
      getline (arch,line);
      cout << line << endl;
    }
    arch.close();
  }
}


Saludos :)

MeCraniDOS

Cita de: ecfisa en 25 Junio 2013, 19:28 PM
A ver si en líneas generales entendí lo que buscas...

Listo, perfecto, gracias por la ayuda  ;-) ;-)
"La física es el sistema operativo del Universo"
     -- Steven R Garman