Tengo esta aplicación de consola de Windows que toma un archivo, hace algunos cálculos y luego escribe la salida en un archivo especificado. La entrada se especifica en el formato "app.exe -input fullfilename". Necesito llamar a esta aplicación desde mi programa C++, pero tengo un problema con los espacios en las rutas a los archivos. Cuando llamo a la aplicación directamente desde cmd.exe escribiendo (sin especificar el archivo de salida para mayor claridad)Cómo pasar parámetros con espacios a través del sistema cstdlib
"c:\first path\app.exe" -input "c:\second path\input.file"
todo funciona como se esperaba. Sin embargo, cuando intento usando cstdlib std :: sistema de la función(), es decir
std::system(" \"c:\\first path\\app.exe\" -input \"c:\\second path\\input.file\" ");
las impresiones de la consola que c: \ primero no es ningún comando válido. Probablemente sea un error común y tenga una solución simple, pero no he podido encontrar ninguno. Thx por cualquier ayuda.
¿Has probado a escapar de los espacios también? – Troubadour
En sistemas UNIX, esta es la responsabilidad del shell, y debería funcionar. No estoy seguro de quién tiene esa responsabilidad en Windows, pero apuesto a que hace una diferencia si estás usando MSVC++ o MinGW o Cygwin. ¿Podría decirnos qué compilador está utilizando? –
Parece que esto funciona, pero no estoy seguro de por qué: 'std :: system (" \ "\" c: \\ first path \\ app.exe \ "-input \" c: \\ second path \\ input.file \ "\" ");' – Naveen