Share via


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]

"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

참고 항목

참조

main: 프로그램 시작