Autor
|
Tema: [C++] Consulta - Usar entrada estándar o desde un archivo (Leído 4,414 veces)
|
Lauta
Desconectado
Mensajes: 371
|
Buenos días, tengo un trabajo práctico para hacer que necesito que, si me pasan un nombre de archivo, lo abra y lea de ahí y sino, que lea de la entrada estándar, la idea es usar la misma variable. En C era fácil, asignada stdin a un FILE*, pero en C++ tengo un ifstream* y no me deja asignarle la entrada estándar (cin), alguien sabe cómo se hace esto?
Muchas gracias!
|
|
« Última modificación: 6 Octubre 2012, 19:59 pm por Lauta »
|
En línea
|
|
|
|
Stakewinner00
|
prueba esto espero qeu te sirva #include <iostream> #include <fstream> using namespace std; int main (int argc, char *argv[]) { char c, str[256]; ifstream arc; cout << "Nombre del archivo: "; cin.getline (str,256); arc.open (str); while (arc.good()) { c = arc.get(); if (arc.good()) cout << c; } flse: return 0; }
|
|
|
En línea
|
|
|
|
Lauta
Desconectado
Mensajes: 371
|
Pero eso es lectura desde el archivo directamente, si no entendí mal el código. Lo que quiero hacer es tener una variable a la que le pueda asignar un archivo de entrada o CIN, entonces después puedo llamar a una función que tome la entrada independientemente de si es un archivo normal o la entrada estándar, algo así: #include <iostream> #include <fstream> int main (int argc, char *argv[]) { ifstream* archivoEntrada; if (argc > 2) { archivoEntrada = new ifstream(argv[1]); }else { archivoEntrada = std::cin; } leerLinea(archivoEntrada); return 0; }
|
|
|
En línea
|
|
|
|
Stakewinner00
|
as compilado el codigo? lo que hace este codigo es lo siguiente Microsoft Windows [Versión 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Reservados todos l
C:\Users\David\Desktop>g++ z.cpp //Compilo el codigo
C:\Users\David\Desktop>a //Lo ejecuto Nombre del archivo: z.cpp //Le indico un archivo (en este caso el que compile) //Y lee el archivo #include <iostream> #include <fstream> using namespace std;
int main (int argc, char *argv[]) { char c, str[256]; ifstream arc; cout << "Nombre del archivo: "; cin.getline (str,256);
arc.open (str); while (arc.good()) {
c = arc.get(); if (arc.good())
cout << c;
} flse:
return 0; } C:\Users\David\Desktop>
|
|
|
En línea
|
|
|
|
Lauta
Desconectado
Mensajes: 371
|
Nop, que es lo de flse?
|
|
|
En línea
|
|
|
|
Stakewinner00
|
Nop, que es lo de flse?
es un label de un goto que borre. Y se quedo allí, no me di cuenta
|
|
|
En línea
|
|
|
|
Lauta
Desconectado
Mensajes: 371
|
Ahí lo compilé, definitivamente no es lo que necesito. Esto es lo que necesito: Lo que quiero hacer es tener una variable a la que le pueda asignar un archivo de entrada o CIN, entonces después puedo llamar a una función que tome la entrada independientemente de si es un archivo normal o la entrada estándar, algo así: #include <iostream> #include <fstream> int main (int argc, char *argv[]) { ifstream* archivoEntrada; if (argc > 2) { archivoEntrada = new ifstream(argv[1]); }else { archivoEntrada = std::cin; } leerLinea(archivoEntrada); return 0; }
|
|
|
En línea
|
|
|
|
|
Lauta
Desconectado
Mensajes: 371
|
Pongo el ejemplo que digo que hice en C: if (argc > 1) { archivoEntrada = fopen(argv [1], "r"); } else { archivoEntrada = stdin; }
Si me pasan el argumento por consola, abro el archivo, sino, asigno la entrada estándar, pero siempre uso la misma variable. En caso que a alguien le pase lo mismo: std::istream* archivoEntrada; if (nomArchEntrada.compare("-") == 0) { archivoEntrada = &std::cin; }else { archivoEntrada->open(nomArchEntrada.c_str(), std::ios::in); }
|
|
« Última modificación: 8 Octubre 2012, 21:46 pm por Lauta »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Guardar entrada estandar en un archivo de texto
Programación C/C++
|
gonzaloi
|
8
|
4,559
|
3 Abril 2011, 00:23 am
por leogtz
|
|
|
Duda con redirección de entrada estándar en C++.
Programación C/C++
|
SARGE553413
|
1
|
2,759
|
28 Mayo 2013, 13:09 pm
por flony
|
|
|
consulta lectura desde archivo
Programación C/C++
|
oskrg55
|
4
|
2,618
|
12 Agosto 2015, 23:14 pm
por oskrg55
|
|
|
Problema entrada estándar
« 1 2 »
Programación C/C++
|
fileteruso
|
11
|
4,111
|
5 Diciembre 2018, 04:24 am
por AlbertoBSD
|
|
|
leer un array por entrada estandar (cmd)
Scripting
|
dijsktra
|
3
|
3,352
|
1 Diciembre 2019, 04:29 am
por EdePC
|
|