Анализ аргументы командной строки C++

Только для систем Microsoft

Код запуска microsoft C/C++ используются следующие правила при интерпретации аргументов заданным в командной строке операционной системы:

  • Аргументы разделяются пробелами (пробел или табуляция).

  • Символ каретки (^) не воспринимается как escape-символ или разделитель.Символ полностью обрабатывается анализатором командной строки в программе в операционной системе перед argv массив в программе.

  • Строка окруженная двойными кавычками ("Строкаинтерпретирует "): как один аргумент, независимо от пробела внутри.Строку в кавычках можно встроить в аргумент.

  • Символ двойной кавычки после обратной косой черты (\") обрабатывается как символ двойной кавычки литерала (").

  • Символы обратной косой черты обрабатываются буквально, если только им не предшествует двойная кавычка.

  • Если четное количество символов обратной косой черты, за которым следует двойная кавычка, один символ косой черты помещается в argv массив для каждой пары символов обратной косой черты, и прямая кавычка интерпретируются как разделитель строк.

  • Если нечетное число символов обратной косой черты, за которым следует двойная кавычка, один символ косой черты помещается в argv массив для каждой пары символов обратной косой черты, и прямая кавычка "избегаются" остальной обратной косой чертой, что литеральную двойной кавычки (") располагаться внутри argv.

Пример

Следующая программа демонстрирует, как аргументы командной строки, переданные:

// command_line_arguments.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
int main( int argc,      // Number of strings in array argv
          char *argv[],   // Array of command-line argument strings
          char *envp[] )  // Array of environment variable strings
{
    int count;

    // Display each command-line argument.
    cout << "\nCommand-line arguments:\n";
    for( count = 0; count < argc; count++ )
         cout << "  argv[" << count << "]   "
                << argv[count] << "\n";
}

В следующей таблице показаны входные данные примера и ожидаемый результат, демонстрируют правила в предыдущем списке.

Результаты разбора командных строк

Вход командной строки

argv [1]

argv [2]

argv [3]

"abc" d e
abc
d
e
a\\b d"e f"g h
a\\b
de fg
h
a\\\"b c d
a\"b
c
d
a\\\\"b c" d e
a\\b c
d
e

См. также

Ссылки

основой: запуск программы