C++ 프로그램은 실행될 때 명령줄을 통해 외부로부터 값을 전달받을 수 있습니다. 이렇게 전달되는 값들을 명령줄 인자(command line arguments)라고 부릅니다. 코드 내부에 값을 직접 하드코딩하는 대신 프로그램 실행 시점에 외부에서 동작을 제어하고 싶을 때 매우 유용하게 활용됩니다.
main() 함수의 argc와 argv
명령줄 인자는 main() 함수의 매개변수를 통해 처리됩니다.
- argc(argument count): 프로그램에 전달된 인자의 총 개수를 나타냅니다. 단, 프로그램 이름 자체도 하나의 인자로 계산되므로 실제 사용자가 입력한 인자 개수는 argc - 1입니다.
- argv[](argument vector): 전달된 각 인자를 가리키는 문자열 포인터 배열입니다.
argv[0]은 항상 프로그램 이름이며, 실제 인자는argv[1]부터 저장됩니다.
다음은 명령줄에서 인자가 전달되었는지 확인하고, 그 결과에 따라 다르게 동작하는 간단한 예제입니다.
예제 코드
#include <iostream>
using namespace std;
int main( int argc, char *argv[] ) {
if( argc == 2 ) {
cout << "전달된 인자는 " << argv[1] << endl;
} else if( argc > 2 ) {
cout << "인자가 너무 많습니다." << endl;
} else {
cout << "인자 하나가 필요합니다." << endl;
}
}실행 결과
인자를 하나만 전달했을 때:
$./a.out testing 전달된 인자는 testing
인자를 두 개 이상 전달했을 때:
$./a.out testing1 testing2 인자가 너무 많습니다.
인자를 전달하지 않았을 때:
$./a.out 인자 하나가 필요합니다.
정리
위 예제에서 볼 수 있듯이, argc 값과 argv[] 배열을 조합하면 사용자가 명령줄에서 입력한 값을 손쉽게 확인하고 프로그램의 동작을 유연하게 제어할 수 있습니다. 파일 경로, 옵션 설정, 모드 선택 등 다양한 용도로 활용되므로, 실무적인 C++ 프로그래밍에서 반드시 익혀두어야 할 기본 개념입니다.