C++ 명령줄 인수 구문 분석
Microsoft 전용
Microsoft C/C++ 시작 코드는 운영 체제 명령줄에 지정된 인수를 해석할 때 다음 규칙을 사용합니다.
인수를 공백이나 탭으로 구분합니다.
캐럿 기호(^)는 이스케이프 문자나 구분 기호로 인식되지 않습니다. 문자는 프로그램의 argv 배열에 전달되기 전에 운영 체제의 명령줄 파서에서 완전하게 처리됩니다.
큰따옴표로 묶은 문자열("string")은 포함된 공백에 상관없이 하나의 인수로 해석됩니다. 따옴표로 묶은 문자열은 인수에 포함될 수 있습니다.
백슬래시 다음의 큰따옴표(\")는 리터럴 큰따옴표 문자(")로 해석됩니다.
백슬래시는 큰따옴표 바로 앞에 있지 않으면 리터럴로 해석됩니다.
짝수 개의 백슬래시 다음에 큰따옴표가 오면 각 백슬래시 쌍마다 하나의 백슬래시가 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] |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|