Autor
|
Tema: [C++] Uso de <vector> (Leído 6,230 veces)
|
MeCraniDOS
Desconectado
Mensajes: 337
Sr. Glass
|
Buenas, tengo este código...#include <stdio.h> #include <io.h> int main() { struct _finddata_t arch; long result; int n; if ( (result = _findfirst("*.txt", &arch)) == -1 ) { printf("\n ~ No hay Archivos ~\n\n"); } else { printf("\n ~ Seleccion de Archivos ~\n\n"); n = 1; do { printf(" %d.- %s\n", n, arch.name); n+=1; } while ( _findnext(result, &arch) == 0 ); _findclose(result); } printf("\n Que archivo quieres abrir?"); getchar(); }
Quiero modificarlo de manera que en vez de escribir el nombre del archivo para abrirlo, solo ponga el numero que lleva delante, es decir, que ponga 1, y se abra el primer archivo..
Creo que se hace con <vector> pero no se como usarlo, espero que puedan ayudarme
Saludos
|
|
|
En línea
|
"La física es el sistema operativo del Universo" -- Steven R Garman
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Tú lo que quieres es algo parecido a mi Rar File Missing.
Consulta mi código, no obstante es bastante sencillo (vas guardando los nombres en un vector, después le pides al usuario un número y accedes a ese elemento del vector).
|
|
|
En línea
|
|
|
|
MeCraniDOS
Desconectado
Mensajes: 337
Sr. Glass
|
|
|
« Última modificación: 22 Junio 2013, 21:28 pm por MeCraniDOS »
|
En línea
|
"La física es el sistema operativo del Universo" -- Steven R Garman
|
|
|
|
MeCraniDOS
Desconectado
Mensajes: 337
Sr. Glass
|
Pues si no sabemos ni siquiera usar un vector vamos mal Ahora ya si que funciona, pero es lo que te digo, se me queda trabado en el "Buscando archivos Rar en la carpeta..." y no pasa de ahí...
|
|
|
En línea
|
"La física es el sistema operativo del Universo" -- Steven R Garman
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
¿Pero no estabas usando archivos .txt?
Borra todo lo que tengas y vuelve al código inicial. Después mirate el vídeo que te pasé.
|
|
|
En línea
|
|
|
|
MeCraniDOS
Desconectado
Mensajes: 337
Sr. Glass
|
¿Pero no estabas usando archivos .txt?
En la función ExtensionRar, cambie el "rar" por "txt", ya lo adapte a lo que quería y no me daba fallos, pero como no funcionaba intente compilar tu proyecto, y también se quedaba trabado en esa linea, del tuyo no modifique nada...
|
|
|
En línea
|
"La física es el sistema operativo del Universo" -- Steven R Garman
|
|
|
ecfisa
Desconectado
Mensajes: 114
|
Hola MeCraniDOS. Quiero modificarlo de manera que en vez de escribir el nombre del archivo para abrirlo, solo ponga el numero que lleva delante, es decir, que ponga 1, y se abra el primer archivo.. Creo que se hace con <vector> pero no se como usarlo, espero que puedan ayudarme Tal vez este código muy básico te pueda servir de guía: #include<iostream> #include <vector> #include <string> #include <windows.h> using namespace std; typedef vector <string> vFileNames; bool GetFileNames(string , string , vFileNames*); void ShowFileNames(vFileNames); int main() { vFileNames FileNames; string rta, ext; int opt; cout << "Unidad + ruta (Ej: C:\\\\CARPETA\\\\): "; cin >> rta; cout << endl << "Extension del archivo (Ej: *.TXT): "; cin >> ext; if (GetFileNames(rta, ext, &FileNames)) do { ShowFileNames(FileNames); cout << "Seleccione un numero 0-" << FileNames.size()-1 <<" (-1 termina)"; cin >> opt; if (opt > -1) cout << endl << "Su eleccion: " << FileNames[opt] << endl << endl; } while (opt != -1); else cout << "No se encontraron archivos"; return 0; } 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(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; }
Saludos
|
|
« Última modificación: 23 Junio 2013, 22:39 pm por ecfisa »
|
En línea
|
|
|
|
MeCraniDOS
Desconectado
Mensajes: 337
Sr. Glass
|
Tal vez este código muy básico te pueda servir de guía:
Si, me sirve de mucho, gracias por molestarte
SaludosEditado
Otra cosa, he adaptado tu código a lo que necesitaba, me ha quedado algo asíbool Listar_Archivos() { vFileNames FileNames; string rta, ext; int opt; rta = ""; ext = "*.txt"; 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 true; } else { return false; } }
Pero tengo este problema, tengo este otro código #include <iostream> #include <fstream> #include <string> #include <cctype> #include <io.h> #include <vector> #include <windows.h> using namespace std; typedef vector <string> vFileNames; bool GetFileNames(string , string , vFileNames*); void ShowFileNames(vFileNames); bool Listar_Archivos(); bool Leer_Archivo(string Nombre); int main() { char Letra; string Nombre_Archivo_Vacio; //Variable para el archivo a leer if (!Listar_Archivos()) { cout<<" No se encontraron archivos!"; cin.get(); // Pausa return -1; // Finaliza el programa con error } if(!Leer_Archivo(Nombre_Archivo_Vacio)) //Se envia la variable "Nombre_Archivo_Vacio" a la funcion "Leer_Archivo" { printf("\n [+] Desea intentar repetir la operacion? (S/N) "); cin>>Letra; } [...] }
Lo que quiero es usar el archivo seleccionado de la función Listar_Archivos en la función Leer_Archivo, pero no se como pasar ese dato de una función a otra
Saludos
|
|
« Última modificación: 25 Junio 2013, 02:38 am por MeCraniDOS »
|
En línea
|
"La física es el sistema operativo del Universo" -- Steven R Garman
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
vector < vector<int> > ?
Programación C/C++
|
bemone
|
3
|
2,748
|
24 Agosto 2012, 05:50 am
por BlackZeroX
|
|
|
Vector i*8+j
Programación C/C++
|
JohnMcb
|
1
|
1,779
|
3 Mayo 2013, 17:56 pm
por rir3760
|
|
|
ejercicio de vector c++
Programación C/C++
|
eterno21
|
8
|
2,904
|
7 Agosto 2013, 17:55 pm
por eterno21
|
|
|
[Consulta] Vector de objectos
Programación C/C++
|
bemone
|
1
|
1,840
|
9 Agosto 2013, 08:19 am
por eferion
|
|
|
DUDA OCZ VECTOR
Hardware
|
Annubiis
|
7
|
4,211
|
17 Septiembre 2013, 13:00 pm
por topomanuel
|
|