Анализ аргументы командной строки 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] |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|