archivo como stdin en C en la línea de comando en visual studio

Cuando escribo un programa en C y lo compilo usando un compilador independiente, como MinGW, puedo escribir "myprogram.exe <test.txt" y la entrada estándar es test.txt.

¿Cómo puedo hacer eso en Visual Studio 2010? Soy consciente de los "argumentos de comando" en las propiedades del proyecto y luego en el depurador, pero no sé qué escribir allí. ¿Es solo la ruta del archivo de entrada o algo más?

preguntado el 16 de mayo de 11 a las 17:05

5 Respuestas

Visual Studio admite este caso de uso. Para su proyecto de C ++, vaya a propiedades, Propiedades de configuración, Depuración y en Argumentos de comando escriba "<test.txt".

Respondido 06 ago 13, 11:08

Está debajo del elemento de menú Depurar -> Propiedades -> pestaña Depuración -> Argumentos de comando - plata est

No puede hacer eso directamente en Visual Studio. La redirección de E / S es una característica del procesador de comandos, no VS. Tú enlatado abra un símbolo del sistema, navegue hasta el directorio en el que se encuentra el ejecutable y emita el comando:

myprogram.exe < test.txt

allí (suponiendo que test.txt también esté en ese directorio, si no, siempre puede usar nombres de ruta completos).

Noticias: Es posible que pueda hacer lo que quiera haciendo que VS ejecute el símbolo del sistema por usted e inicie su programa. En Propiedades de configuración | Depurando, reemplace lo que está en el campo Comando (generalmente $ (TargetPath)) con:

cmd.exe /c "$(TargetPath)" < source-file

Deje los argumentos de comando en blanco. Sin embargo, nunca he probado esto. Puede que no funcione.

contestado el 16 de mayo de 11 a las 23:05

¡Gracias por su respuesta! Sin embargo, tengo una pregunta de seguimiento. La razón principal por la que quiero usar VS2010 es por el depurador. ¿Hay alguna forma de que pueda usar un símbolo del sistema separado junto con el depurador? - Anonimo

Vaya a las propiedades de su proyecto y, en "Propiedades de configuración> Depuración", escriba algo como lo siguiente en el campo "Argumentos de comando": < "$(TargetDir)\input.txt"

Nota:

  • $(TargetDir) se expande a la carpeta "Debug" de su proyecto, así que asegúrese de que input.txt esté allí. Puede poner cualquier ruta aquí, pero asegúrese de que sea absoluta.
  • Asegúrese de utilizar las comillas dobles; de lo contrario, obtendrá un error si su ruta contiene espacios.

(usando Visual Studio 2013 con C ++)

respondido 09 mar '15, 18:03

Esa es una función del programa de shell de la línea de comandos, no del compilador. Puedes hacer exactamente eso, si corres bajo bash de msys en lugar de usar el shell DOS de Windows predeterminado (cutre).

contestado el 16 de mayo de 11 a las 22:05

Visual Studio no es solo un compilador. - BartoszKP

Para un proyecto dentro de Visual Studio, haga clic derecho en el Proyecto y seleccione Propiedades. Dentro de la ventana de propiedades puede escribir la ruta absoluta del archivo físico que desea utilizar como entrada.

De lo contrario, debería poder ejecutar su aplicación desde la consola de Visual Studio

Inicio-> Programas-> Microsoft Visual Studio 2xxx-> Símbolo del sistema de Visual Studio

Programa:

    class Program
{
    static void Main(string[] args)
    {
        if (args.Length > 0)
        {
            foreach (var item in args)
            {
                Console.WriteLine("{0}", item);
            }
        }
    }
}

Visual Studio 2010 Configuración del argumento de la aplicación de consola

contestado el 16 de mayo de 11 a las 23:05

¿Dónde especificas eso? Fui a Propiedades del proyecto-> Propiedades de configuración-> Depuración y escribí la ruta del archivo en la categoría Argumentos de comando, pero nada fue diferente. - Anonimo

Escribí este pequeño programa. Adjunto la imagen en editar arriba. class Programa {static void Main (string [] args) {if (args.Length> 0) {foreach (var item in args) {Console.WriteLine ("{0}", item); }}}} - Kanchirk

La configuración de los lenguajes nativos (C y C ++) es completamente diferente a la de los lenguajes administrados como C #. - Ferruccio

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.