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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Consulta - Usar entrada estándar o desde un archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Consulta - Usar entrada estándar o desde un archivo  (Leído 4,457 veces)
Lauta


Desconectado Desconectado

Mensajes: 371



Ver Perfil
[C++] Consulta - Usar entrada estándar o desde un archivo
« en: 6 Octubre 2012, 17:39 pm »

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

TODOS LOS MANUALES DE PROGRAMACION!!!

Quieres ganar dinero? Clickea en alguno de los enlaces y empieza ya!!!
Daddybux
Bux.to
Adverbux
Dailyclick
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Consulta - Usar entrada estándar o cin
« Respuesta #1 en: 6 Octubre 2012, 18:20 pm »

prueba esto

espero qeu te sirva

Código
  1.  
  2. #include <iostream>
  3. #include <fstream>
  4. using namespace std;
  5.  
  6.  
  7. int main (int argc, char *argv[]) {
  8.  char c, str[256];
  9.       ifstream arc;
  10.  cout << "Nombre del archivo: ";
  11. cin.getline (str,256);
  12.  
  13.  arc.open (str);      
  14.  while (arc.good())  
  15.  {
  16.  
  17.  
  18.     c = arc.get();
  19.    if (arc.good())
  20.  
  21.      cout << c;
  22.  
  23.  }
  24. flse:
  25.  
  26.  
  27.  return 0;
  28. }


En línea

Lauta


Desconectado Desconectado

Mensajes: 371



Ver Perfil
Re: [C++] Consulta - Usar entrada estándar o desde un archivo
« Respuesta #2 en: 6 Octubre 2012, 20:03 pm »

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í:

Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. int main (int argc, char *argv[]) {
  5.  ifstream* archivoEntrada;
  6.  if (argc > 2) {
  7.    archivoEntrada = new ifstream(argv[1]);
  8.  }else {
  9.    archivoEntrada = std::cin;
  10.  }
  11.  
  12.  leerLinea(archivoEntrada);
  13.  
  14.  return 0;
  15. }
  16.  
En línea

TODOS LOS MANUALES DE PROGRAMACION!!!

Quieres ganar dinero? Clickea en alguno de los enlaces y empieza ya!!!
Daddybux
Bux.to
Adverbux
Dailyclick
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Consulta - Usar entrada estándar o desde un archivo
« Respuesta #3 en: 6 Octubre 2012, 20:07 pm »

as compilado el codigo?

lo que hace este codigo es lo siguiente

Código:
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 Desconectado

Mensajes: 371



Ver Perfil
Re: [C++] Consulta - Usar entrada estándar o desde un archivo
« Respuesta #4 en: 6 Octubre 2012, 20:27 pm »

Nop, que es lo de flse?
En línea

TODOS LOS MANUALES DE PROGRAMACION!!!

Quieres ganar dinero? Clickea en alguno de los enlaces y empieza ya!!!
Daddybux
Bux.to
Adverbux
Dailyclick
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Consulta - Usar entrada estándar o desde un archivo
« Respuesta #5 en: 6 Octubre 2012, 20:47 pm »

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 Desconectado

Mensajes: 371



Ver Perfil
Re: [C++] Consulta - Usar entrada estándar o desde un archivo
« Respuesta #6 en: 6 Octubre 2012, 22:24 pm »

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í:

Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. int main (int argc, char *argv[]) {
  5.  ifstream* archivoEntrada;
  6.  if (argc > 2) {
  7.    archivoEntrada = new ifstream(argv[1]);
  8.  }else {
  9.    archivoEntrada = std::cin;
  10.  }
  11.  
  12.  leerLinea(archivoEntrada);
  13.  
  14.  return 0;
  15. }
  16.  
En línea

TODOS LOS MANUALES DE PROGRAMACION!!!

Quieres ganar dinero? Clickea en alguno de los enlaces y empieza ya!!!
Daddybux
Bux.to
Adverbux
Dailyclick
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Consulta - Usar entrada estándar o desde un archivo
« Respuesta #7 en: 6 Octubre 2012, 23:18 pm »

pues no entendi lo k querias.
En línea

Lauta


Desconectado Desconectado

Mensajes: 371



Ver Perfil
Re: [C++] Consulta - Usar entrada estándar o desde un archivo
« Respuesta #8 en: 7 Octubre 2012, 08:02 am »

Pongo el ejemplo que digo que hice en C:

Código
  1. if (argc > 1) {
  2. archivoEntrada = fopen(argv[1], "r");
  3. } else {
  4. archivoEntrada = stdin;
  5. }
  6.  

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:

Código
  1. std::istream* archivoEntrada;
  2.  
  3. if (nomArchEntrada.compare("-") == 0) {
  4. archivoEntrada = &std::cin;
  5. }else {
  6. archivoEntrada->open(nomArchEntrada.c_str(), std::ios::in);
  7. }
  8.  
« Última modificación: 8 Octubre 2012, 21:46 pm por Lauta » En línea

TODOS LOS MANUALES DE PROGRAMACION!!!

Quieres ganar dinero? Clickea en alguno de los enlaces y empieza ya!!!
Daddybux
Bux.to
Adverbux
Dailyclick
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Guardar entrada estandar en un archivo de texto
Programación C/C++
gonzaloi 8 4,593 Último mensaje 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,788 Último mensaje 28 Mayo 2013, 13:09 pm
por flony
consulta lectura desde archivo
Programación C/C++
oskrg55 4 2,667 Último mensaje 12 Agosto 2015, 23:14 pm
por oskrg55
Problema entrada estándar « 1 2 »
Programación C/C++
fileteruso 11 4,209 Último mensaje 5 Diciembre 2018, 04:24 am
por AlbertoBSD
leer un array por entrada estandar (cmd)
Scripting
dijsktra 3 3,396 Último mensaje 1 Diciembre 2019, 04:29 am
por EdePC
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines