¿Existe algún método que le permita imprimir todos los archivos en el directorio fuente en C ++?

Entonces, no está del todo claro lo que estás preguntando. Todos los archivos en el directorio de origen parecen implicar que está buscando una forma de reunir archivos para un proyecto de creación o proyecto, en lugar de una técnica para enumerar archivos mediante programación, pero es posible que esté buscando ayuda para una tarea tonta.

De cualquier manera, la respuesta es “depende de su plataforma”.

Para makefiles … ¿estás en Linux o MacOS? Si es así, probablemente esté en un shell bash, y puede alguna variación de `ls srcdir / *. Cpp`> sources.txt (o encontrar, si está en un árbol de origen en lugar de un único directorio) para capturarlos . Si está en Windows y no usa un IDE de Visual Studio, sería mejor que instale cygwin y use bash, pero podría usar powershell, o incluso cmd.exe, para lograr lo mismo.

Si está buscando una solución programática, en Windows, comience aquí: función FindFirstFile. En Linux, comience aquí: directorio abierto – página de manual de Linux o aquí: glob (3) – página de manual de Linux (no use glob en AIX o Solaris – sus implementaciones no son seguras para subprocesos). No sé cuál es la mejor solución en MacOS X, fuera de mi cabeza. Buena suerte. Y, si está tratando de obtener ayuda con la tarea, haga su propia tarea, por favor.

Bueno, si está preguntando por el mundo de Unix o Linux, es un simple script de shell que puede construir y adaptar a su satisfacción. Comience por resolver en su sistema cómo imprimir un solo archivo. Me gusta incluir pr en la tubería para agregar números de página, el nombre del archivo en los encabezados de página y, opcionalmente, puede pedirle que agregue números de línea, pero eso aumenta el riesgo de que las líneas sean demasiado largas en la impresora y pierdan cosas de Los extremos derechos de las líneas. Puede jugar con bonitos programas de impresión para ordenar el formato de la fuente si encuentra que los archivos necesitan muchos ajustes para ser consistentes.

A partir de ahí, puede ampliar el script con un bucle para conducirlo a través de todos los archivos de origen en el directorio actual. Lo que me gustaba hacer en mi versión de este script era generar un archivo con la lista de información ls -l para el directorio en el momento en que lo imprimí. Luego, cuando obtuve una impresión satisfactoria, vi ese archivo como “marcador”. Cambie fácilmente el script para que solo imprima archivos en el directorio que tengan una fecha de última modificación más nueva que el marcador. Esos son los archivos que cambiaron desde la última copia impresa que aceptó. A menos que el código fuente esté experimentando un cambio furioso, imprimir solo los archivos recientemente modificados debería ahorrar algunos árboles y reducir la cantidad de tareas de archivo que debe hacer para archivar la copia impresa. Mantuve el mío en carpetas de 3 anillos con una pestaña de papel que separaba los archivos entre sí. La parte laboriosa de la tarea de archivo era que si la lista reemplazada tenía notas marginales, no querría perder esas notas en el proceso, así que las transcribiría a las nuevas páginas de listas. Suena como un gran lastre, pero me ayudó a familiarizarme con los archivos fuente.

¿Atascado en Windows? Bueno, obtenga herramientas Cygwin (gratis – bash, ls, pr, …) y úselas en Windows como si estuviera trabajando en un sistema Gnu / Linux. O, si prefiere encerrarse en el mundo de M $, descubra cómo hacer lo anterior con PowerShell.

Una cantidad decepcionante de lo anterior dependerá de los detalles de su sistema. ¿Cómo poner las cosas en cola a su impresora? ¿Cuántas líneas por página permite la impresora después de deducir los encabezados de impresión? Y algunos serán asuntos de gustos y opiniones. ¿Cuánto preocuparse por las líneas truncadas? ¿Qué tan bonito debe ser el trabajo con líneas largas que envuelven líneas? ¿Puede introducir el ajuste de línea sin anotar la numeración de líneas en la impresión?

Sospecho que puede ser lo suficientemente nuevo para ejecutar scripts de shell que tal vez le haya dejado con un montón de preguntas más pequeñas. Las respuestas están en las páginas del manual o puede enmarcarlas como nuevas preguntas más pequeñas. stackoverflow es un gran sitio para encontrar respuestas técnicas, o puede probar suerte con preguntas técnicas aquí en Quora. La búsqueda de Google puede encontrar sus preguntas más específicas ya formuladas y respondidas en algún lugar de la web.

Editar: ¿O estoy entendiendo mal la esencia de tu pregunta? ¿Está pidiendo orientación sobre cómo implementar en C ++ un equivalente al script de shell que esbocé para usted aquí? Una búsqueda en Google para:

C ++ directo

Puede encontrar algunas sugerencias útiles. Por ejemplo, consulte: Dirent.h: obtenga las cadenas de archivos con una determinada extensión exclusivamente. O si el quid de su preocupación es cómo imprimir un archivo desde un programa C ++, intente buscar en Google:

C ++ impresión a impresora

aunque no tengo claro por qué querrías incorporar tantos detalles del sistema en tu programa C ++. En algún momento de la implementación, creo que es mejor redirigir la salida del programa a un proceso que ejecute un script de shell que proporcione. El usuario (o alguien) puede adaptar ese script de shell para que se ajuste a los detalles de su entorno de sistema.

C ++ como lenguaje no trata con sistemas de archivos. Debe buscar en bibliotecas estándar de funciones que hacen esto. No espere que una sola función logre esto, ya que

  • es posible que desee diferentes tipos de información sobre esos archivos;
  • La impresión se puede hacer de muchas maneras y con diferentes formatos

La forma habitual de dividir esta tarea en partes es obtener primero una “entidad de directorio” que incluya un contenedor de objetos / registros de archivo, atravesar este contenedor, obtener un registro de archivo a la vez, obtener la información que necesita y luego imprimirlo .

Si tiene una estructura de carpetas compleja en su PC y necesita navegar rápidamente, será útil imprimir la lista de carpetas y tenerla a mano. Verá la ubicación de cada subcarpeta, para que pueda encontrar fácilmente la que está buscando.

Una herramienta que lo ayudará con esto es Print Maestro. Esta práctica solución imprimirá rápidamente el árbol de carpetas después de la vista previa. Genera automáticamente una lista fácil de leer de carpetas ubicadas en la carpeta que selecciona e imprime este documento.

Puede acceder a los archivos utilizando la estructura directa. Lea un poco más sobre la biblioteca directa.
Entradas de directorio

Un hack perezoso alternativo sería llamar a un script de shell desde su código C ++ para enumerar sus archivos fuente (aunque no lo haría)