elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema al abrir ficheros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al abrir ficheros  (Leído 2,674 veces)
Tururu_ru

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Problema al abrir ficheros
« en: 24 Octubre 2011, 18:02 pm »

Hola, quiero abrir un archivo de texto en c++, pero el nombre de ese archivo puede ser desde 1.txt hasta 5.txt. Es decir, tengo 5 archivos de texto, 1.txt...5.txt, y quiero abrir el archivo que le corresponda a la variable "mod". Si mod vale 1, abriré el archivo 1.txt, si mod vale 2, el archivo 2.txt, y así sucesivamente. He intentado abrirlo así: f.open("'mod'.txt", ios::out);, también así: f.open("mod.txt", ios::out); Pero no lo consigo, alguien me podría ayudar?
Gracias!


En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Problema al abrir ficheros
« Respuesta #1 en: 24 Octubre 2011, 18:10 pm »

Pues haz un "switch - case" y listo

Código
  1. switch(mod)
  2. {
  3. case 1:
  4.  
  5. // abre el archivo 1....
  6.  
  7. break;
  8. case 2:
  9. .....
  10.  

y asin sucesivamente


y lo de "f.open()" esta bien,con ios::out) abres el archivo para realizar operaciones de escritura,si tu intencion es leer los archivos usa ios::in
saludos


« Última modificación: 24 Octubre 2011, 18:16 pm por Riki_89D » En línea

Tururu_ru

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Problema al abrir ficheros
« Respuesta #2 en: 24 Octubre 2011, 18:24 pm »

Sí, eso ya lo había pensado, pero tengo que abrir esos ficheros muchas veces en un mismo programa, por lo que no quiero llenar muchas lineas de código con tantos switch. Pienso que tiene que haber alguna otra manera usando las comillas o las tildes en el nombre del fichero. Alguien sabe como?
Aun así gracias por contestar.
En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Problema al abrir ficheros
« Respuesta #3 en: 24 Octubre 2011, 18:33 pm »

A ya entiendo....lo que quieres es concatenar la variable mod con el nombre del archivo para que quede "txt1.txt"....y ese 1 varia segun lo que pongas en mod.....bien xD


si lo que quieres hacer es eso,usa la funcion strcat();


Código
  1. #include "iostream"
  2.  
  3. char File[30] = "texto";
  4. char Mod[2];
  5. char Ext[5] = ".txt";
  6.  
  7. char *Final = NULL;
  8. char *U = NULL;
  9.  
  10. int main(void)
  11. {
  12.  
  13. std::cin >> Mod;  //Leemos Mod
  14. fflush(stdin);
  15. Final = strcat(File,Mod);  // Juntamos File+Mod = texto1
  16. U = strcat(Final,Ext);  // Y Juntamos "texto1" con la extension ".txt" = texto1.txt
  17.  
  18. std::cout << U;
  19. getchar();
  20. return 0;
  21. }
  22. // Eso imprime texto1.txt
  23.  
  24.  


en vez del "cout" deberias de poner "f.open(U,ios::out);

Lo acabo de probar y funciona,ya solo tendrias que con "cin" o gets()" recojer el numero en mod

apartir de alli yo lo que aria seria crear mi propia funcion para que el code nos ea tan grande


saludos
« Última modificación: 24 Octubre 2011, 18:56 pm por Riki_89D » En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Problema al abrir ficheros
« Respuesta #4 en: 24 Octubre 2011, 22:05 pm »

¡Buenas!

Como veo que andas un poco perdido, te recomiendo que uses la clase stringstream que se encuentra definida en <sstream>. Sobre esta clase puedes realizar operaciones de "entrada" y "salida" como si lo hicieses sobre objetos del tipo iostream (utilizando por ejemplo los operadores << y >>).

Aqui te dejo un enlace a la referencia de la clase:
http://www.cplusplus.com/reference/iostream/stringstream/

Investiga un poco sobre ella y si aun asi no consigues lo que quieres, vuelve por aqui.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Problema al abrir ficheros
« Respuesta #5 en: 25 Octubre 2011, 03:50 am »

Siguiendo la recomendacion de do-while
un ejemplo sencillo del uso de stringstream y string para crear el nombre en la forma "Nombre_N.txt" es:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <sstream>
  7. using std::stringstream;
  8.  
  9. #include <string>
  10. using std::string;
  11.  
  12. int main()
  13. {
  14. for (int i = 0; i != 5; ++i){
  15. stringstream ss;
  16. ss << i;
  17. string nombre = "Nombre_" + ss.str() + ".txt";
  18. cout << nombre.c_str() << endl;
  19. }
  20.  
  21. return 0;
  22. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
abrir varios ficheros y unirlos en una variable
PHP
drakolive 4 2,198 Último mensaje 21 Marzo 2008, 01:53 am
por drakolive
ABrir ficheros
Programación C/C++
mapers 3 2,307 Último mensaje 5 Abril 2011, 23:24 pm
por Akai
Manejo de ficheros: Me da el error al abrir el fichero, por que?
Programación C/C++
Firos 2 2,771 Último mensaje 11 Abril 2011, 16:15 pm
por Firos
Problema con descriptores de ficheros
Programación C/C++
iapellaniz 3 1,822 Último mensaje 17 Octubre 2014, 23:35 pm
por Eternal Idol
Problema con ficheros
Programación C/C++
DeIMachine 2 1,358 Último mensaje 12 Diciembre 2015, 23:06 pm
por DeIMachine
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines