Quiero convertir WinMain
' s cmdLine
argumento para argc
y argv
para que pueda utilizar la función de análisis de argumentos que escribí para aplicaciones de consola.Romper cmdLine de WinMain en las principales viejo estilo() 's argumentos
Esto sería trivial, excepto que también quiero admitir "presupuestos". Por ejemplo:
test.exe test1 test2 "testing testing"
debería ser
argv[0] = "test.exe"; argv[1] = "test1"; argv[2] = "test2"; argv[3] = "testing testing";
que darse cuenta de que cmdLine no tiene el nombre del programa (argv [0]); esto no importa, puedo usar un valor ficticio.
Estaba pensando en hacerlo con una expresión regular, (("[^"]+")\s+)|(([^\s]+)\s*)
No estoy seguro de lo bien que funcionaría aunque ... ¿Probablemente no muy bien? ¿Hay alguna función para hacer eso en la API de Windows? Gracias
simplemente ver que 'CommandLineToArgvW' doesn' t agrega un valor NULL de centinela al final de la matriz, por lo que no tiene la misma semántica que 'argv' en la norma C. – jamesdlin
Además,' CommandLineToA rgvW' no expandirá globs. Si '__argc' /' __argv' no están disponibles, debe usar '__getmainargs' o' __wgetmainargs' en su lugar. –
@AndrewMedico ¿Desde C89? El estándar de lenguaje exige que "' argv [argc] 'sea un puntero nulo". Si bien es información redundante, es un comportamiento estándar, por lo que algunas personas confían en eso. – jamesdlin