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!
Pues haz un "switch - case" y listo
switch(mod)
{
case 1:
// abre el archivo 1....
break;
case 2:
.....
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
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.
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();
#include "iostream"
char File[30] = "texto";
char Mod[2];
char Ext[5] = ".txt";
char *Final = NULL;
char *U = NULL;
int main(void)
{
std::cin >> Mod; //Leemos Mod
fflush(stdin);
Final = strcat(File,Mod); // Juntamos File+Mod = texto1
U = strcat(Final,Ext); // Y Juntamos "texto1" con la extension ".txt" = texto1.txt
std::cout << U;
getchar();
return 0;
}
// Eso imprime texto1.txt
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
¡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/ (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!
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:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <sstream>
using std::stringstream;
#include <string>
using std::string;
int main()
{
for (int i = 0; i != 5; ++i){
stringstream ss;
ss << i;
string nombre = "Nombre_" + ss.str() + ".txt";
cout << nombre.c_str() << endl;
}
return 0;
}
Un saludo