[C con Clase] Leer de stdin una cadena extremadamente larga

Edmundo Cuadriello Narvaez ecnarvaez en yahoo.com
Jue Jul 20 05:22:24 CEST 2017


Holas !  Carlos, 

siempre se aprende algo nuevo, gracias por compartir tu solucion ..

saludos! 

ATTE:
ISC Edmundo Cuadriello Narvaez
Software Engineer Sr.
C++, C#, JAVA programmer.
Tel: 33-33357347
Cel: 33-13555312

ecnarvaez en yahoo.com
ecnarvaez en hotmail.com
"All for Linux, and Linux for every one"

--------------------------------------------
El mar 18-jul-17, Carlos <jsbwyl8 en gmail.com> escribió:

 Asunto: Re: [C con Clase] Leer de stdin una cadena extremadamente larga
 A: "Edmundo Cuadriello Narvaez" <ecnarvaez en yahoo.com>
 Cc: "Lista de correo sobre C y C++" <cconclase en listas.conclase.net>
 Fecha: martes, 18 de julio de 2017, 14:50
 
 Hola
 Edmundo,
 Investigando me
 tope con varias cosas interesantes tales como:
 http://www.linusakesson.net/programming/tty/
 
 y con
 comandos de linux como ulimit -a , el pipe size es la
 limitante para el entrada de un gran numero de caracteres,
 con esta configuración no tiene mayor
 problemas
 time(seconds)        3
 file(blocks)         102400
 data(kbytes)         524288
 stack(kbytes)        32768
 coredump(blocks)     unlimited
 memory(kbytes)       unlimited
 locked memory(kbytes) 64
 process              3
 nofiles              1024
 vmemory(kbytes)      524288
 locks                unlimited
 rtprio               0
 La limitante esta asociada al
 sistema operativo, mas que a la forma de leer la cadena
 ;)
 Saludos!.
 
 El 10 de julio de 2017,
 20:13, Edmundo Cuadriello Narvaez <ecnarvaez en yahoo.com>
 escribió:
 
 
 Holas ! Carlos,
 
 
 
 ya te dio Daniel alguna opcion....
 
 
 
 A mi se me ocurre que podrias, crear una interface basada en
 Windows( atraves de MFC ) que supla el programa del CMD y te
 permita recibir el numero de caracteres que esperas sean
 pegados desde el usuario, quiza agregando un dialog y a este
 dialog agregarle un TextBox o un TextArea y que puedas pegar
 toda la informacion y de ahi ya la puedas tomar en bloques y
 enviarla a donde requieras ...
 
 
 
 algo similar hacen los SQLBrowsers , reciben queries muy
 grandes, algunos son de 1 GB de informacion (un solo query),
 y es enviado en pequenos "chunks" o bloques que
 son pegados al recibirlos del otro lado (del server quiza)
 ...y ya ser procesado por el SQL engine ..
 
 
 
 es algo que se me ocurre y usando C++,  ahora que si lo
 quieres hacer rapido, podrias usar C# para la interface y
 C++ para la transferencia de los datos . :) jejejeje
 
 
 
 saludos
 
 
 
 ATTE:
 
 ISC Edmundo Cuadriello Narvaez
 
 Software Engineer Sr.
 
 C++, C#, JAVA programmer.
 
 Tel: 33-33357347
 
 Cel: 33-13555312
 
 
 
 ecnarvaez en yahoo.com
 
 ecnarvaez en hotmail.com
 
 "All for Linux, and Linux for every one"
 
 
 
 ------------------------------ --------------
 
 El vie 30-jun-17, Daniel Pons Monforte <dponsmonforte en gmail.com>
 escribió:
 
 
 
  Asunto: Re: [C con Clase] Leer de stdin una cadena
 extremadamente larga
 
  A: cconclase en listas.conclase.net
 
  Cc: "Carlos" <jsbwyl8 en gmail.com>
 
  Fecha: viernes, 30 de junio de 2017, 2:05
 
 
 
 
 
      Hola Carlos,
 
      No es un problema de que instrucción utilizar. Es
 un
 
  problema de
 
        gestionar la información. Sabes el dicho de
 divide y
 
  vencerás?
 
        Pues eso es lo que tienes que gestionar.
 Muchos
 
  protocolos de
 
        comunicación envían paquetes pequeños de datos
 que
 
  luego se
 
        acumulan en grandes cantidades. Pues tu debes
 hacer lo
 
  mismo. Un
 
        millón de caracteres es una burrada de
 información.
 
  O haces que tu
 
        programa lo lea por paquetes o envías la
 información
 
  por paquetes.
 
      Así de simple.
 
      Suerte
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
      El 30/06/17 a
 
  las 00:30, Carlos
 
        escribió:
 
 
 
 
 
 
 
 
 
 
 
 
 
              Hola a todos, me presento soy Carlos
 de
 
  Chile, y tengo
 
                una inquietud que no he podido
 resolver,
 
  espero algún
 
                experto en c++ me pueda orientar.
 
 
 
 
 
 
 
 
 
              Como puedo leer una cadena de texto que
 contiene
 
  números
 
              separados por espacios ej. "1212
 123123
 
  12312312" , el largo
 
              total de esta cadena es de mas de
 400.000
 
  caracteres con una
 
              media aprox de 1.000.000 de caracteres
 que es
 
  pegada en una
 
              consola. Note que hasta 65535 caracteres
 el
 
  programa es
 
              capaz de devolver la entrada, pero
 ingresando un
 
  largo mayor
 
              a eso, el programa deja de responder.
 
 
 
 
 
 
 
 
 
            Existe alguna forma de leer estas
 colosales
 
  cadenas por la
 
            entrada estándar con c++?
 
 
 
 
 
 
 
 
 
          Saludos!.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        ______________________________
 _________________
 
  Lista de correo Cconclase Cconclase en listas.conclase.net
 
  http://listas.conclase.net/
 mailman/listinfo/cconclase_ listas.conclase.net
 
  Bajas: http://listas.conclase.net/
 index.php?gid=2&mnu=FAQ
 
 
 
 
 
 
 
    ______________________________ _________________
 
  Lista de correo Cconclase Cconclase en listas.conclase.net
 
  http://listas.conclase.net/
 mailman/listinfo/cconclase_ listas.conclase.net
 
  Bajas: http://listas.conclase.net/
 index.php?gid=2&mnu=FAQ
 
 
 




Más información sobre la lista de distribución Cconclase