Как анализировать командную строку так же, как это делает VBScript

Для справки, метод, к которому вы обращаетесь, называется flexible array member, и, к сожалению, он не поддерживается в C ++ как функция ядра или стандартная библиотечная функция. Я нахожу это неутешительным.

std::array - это одетый массив C-стиля (с некоторыми членами, которые позволяют использовать его в качестве контейнера STL, например, итерации, калибровки, интроспекции типа и т. Д.).

Единственный способ узнать функциональность, которая была бы похожа на гибкий элемент массива, заключалась бы в создании std::vector<char> с размером, заданным в заголовке sizeof(header) + <extra bytes for payload>, а не placement new в vector.data() ]. Вы можете обернуть все это в класс-помощник, чтобы сохранить некоторую типизацию для нескольких сценариев.

0
задан zett42 19 January 2019 в 17:27
поделиться

3 ответа

Вы должны защитить обратную косую черту с помощью другой обратной косой черты, в противном случае обратная косая черта рассматривается как символ перехода для следующей двойной кавычки. См. Это сообщение в блоге Раймонда Чена для обоснования такого поведения. Вот цитата соответствующей части:

  • Строка обратных косых черт, за которой не следует кавычка, не имеет особого значения.
  • Четное число обратных слешей, за которыми следует кавычка, рассматривается как пары защищенных обратных слешей, за которыми следует слово-терминатор.
  • Нечетное число обратных косых черт, за которыми следует кавычка, рассматривается как пары защищенных обратных косых черт, за которыми следует защищенная кавычка.
0
ответ дан The Om 19 January 2019 в 17:27
поделиться

Если вас не устраивает синтаксический анализ командной строки, вы можете сделать это самостоятельно:

Просто используйте GetCommandLine и анализируйте командную строку так, как вы этого хотите.

В другом посте уже описывалось, как должна / должна обрабатываться командная строка (см. блог Рэймонда Чена ).

0
ответ дан xMRi 19 January 2019 в 17:27
поделиться

Я попытался скомпилировать это с дополнительной косой чертой ко второму аргументу, как показано ниже, и смог получить желаемый результат!

"\\server\directory\file.ext" "C:\trailing\backslash\\" "file.txt"

Это был вывод

[110 ]

Подпишитесь на мой пост, если он вам поможет: D

0
ответ дан Naveen KH 19 January 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: