У меня есть приложение, созданное с помощью компилятора MinGW С++, который работает как grep-acommand, выглядит примерно так:
myapp -e '.*' *.txt
где вещь, которая приходит после ключа -e, представляет собой регулярное выражение, а после этого - шаблон имени файла. Кажется, что MinGW автоматически расширяет (globs в терминах UNIX) командную строку, поэтому мое регулярное выражение получает искалеченное. Я могу отключить это поведение, установив глобальную переменную _CRT_glob
равной нулю. Это будет хорошо для bash и других разумных пользователей оболочки, так как оболочка расширит шаблон файла. Тем не менее, для пользователей MS cmd.exe
мне кажется, что мне придется сам развернуть шаблон файла.
Итак, мой вопрос: кто-нибудь знает библиотеку globbing (или средство в MinGW) для расширения командной строки partial? Я знаю о функции _setargv для Windows CRT, но это расширяет полную командную строку. Обратите внимание, что я видел этот вопрос, но на самом деле это не касается частичного расширения.
Я закончил использование условной компиляции, чтобы написать свой собственный код подстановки для Windows-версии моего приложения. Это было довольно легко, так как у меня есть собственный класс CommandLine, который инкапсулирует argc и argv из main(). Тем не менее, мне было бы интересно узнать о других решениях.