C++에서 명령 줄 인수 검색

Jinku Hu 2023년10월12일
  1. int main(int argc, char *argv[])표기법을 사용하여 C++에서 명령 줄 인수 검색
  2. int main(int argc, char **argv)표기법을 사용하여 C++에서 명령 줄 인수 검색
  3. while루프를 사용하여 C++에서 명령 줄 인수 인쇄
C++에서 명령 줄 인수 검색

이 기사에서는 C++에서 명령 줄 인수를 검색하는 방법에 대한 몇 가지 방법을 설명합니다.

int main(int argc, char *argv[])표기법을 사용하여 C++에서 명령 줄 인수 검색

명령 줄 인수는 실행 시작시 프로그램에 전달할 수있는 문자열 값입니다. 일반적으로 이러한 인수는 CLI 전용 인터페이스가있는 프로그램에서 널리 사용됩니다. Unix 명령 줄 유틸리티. C++ 프로그램에는 명령 줄 인수에 액세스하기위한 특별한main함수 정의가 있어야합니다. 즉,main함수는 매개 변수를(int argc, char *argv[])로 포함해야합니다. argc매개 변수는 프로그램 이름 자체를 포함하여 프로그램에 전달 된 인수의 총 개수를 나타냅니다. 반면argv는 인수 값을 나타내는 문자열의 배열을 저장하며 배열 표기법 인argv[0]을 사용하여 액세스 할 수 있습니다. char포인터 배열은0으로 종료됩니다.

다음 예제는 각 인수 값을 콘솔에 인쇄하는for루프의 기본 사용법을 보여줍니다. 그러나 앞의if문은 프로그램에 지정된 인수가 있는지 확인한 다음 실행을 계속합니다.

#include <iostream>
#include <string>

using std::cerr;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  if (argc < 2) {
    cerr << "No program parameters provided !" << endl;
    exit(EXIT_FAILURE);
  }

  for (int i = 0; i < argc; i++) printf("argv[%d] = %s\n", i, argv[i]);

  exit(EXIT_SUCCESS);
}

int main(int argc, char **argv)표기법을 사용하여 C++에서 명령 줄 인수 검색

유효하고 이전 것과 똑같이 작동하는 또 다른main함수 프로토 타입이 있으므로int main(int argc, char **argv)표기법이 발생할 때 혼동이 없는지 확인하기 위해 포함합니다. 요소에 액세스하는 것은 같은 방식으로 수행되며for루프를 사용하여 순회 할 수 있습니다.

#include <iostream>
#include <string>

using std::cerr;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char **argv) {
  if (argc < 2) {
    cerr << "No program parameters provided !" << endl;
    exit(EXIT_FAILURE);
  }

  for (int i = 0; i < argc; i++) printf("argv[%d] = %s\n", i, argv[i]);

  exit(EXIT_SUCCESS);
}

while루프를 사용하여 C++에서 명령 줄 인수 인쇄

인수 값에 액세스하는 또 다른 방법은argv포인터가 0이 될 때까지 역 참조하는 것입니다. argv배열은 0 값으로 종료되도록 보장되며,while루프를 구현하여 배열을 탐색하고 인수 값을 하나씩 인쇄하는 데 활용할 수 있습니다. 아래의if문의printf호출이 프로그램에 충분한 인수가 전달되지 않았 음을 나타내는 오류보고자 역할을합니다. 흥미로운 부분은 프로그램 이름이argv[0]표기법과%s지정자로 검색되어 변경 될 때마다 이름을 하드 코딩하는 것보다 더 유연한 방법이라는 것입니다.

#include <iostream>
#include <string>

using std::cerr;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  if (argc < 4) {
    printf("Usage: ./%s arg1 arg2 arg3\n", argv[0]);
    exit(EXIT_FAILURE);
  }

  while (*argv) {
    cout << *argv << endl;
    argv += 1;
  }

  exit(EXIT_SUCCESS);
}
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook