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