문제

실행 파일에 옵션을 어떻게 전달합니까? 옵션 부울 논쟁을 만드는 것보다 쉬운 방법이 있습니까?

편집 : 마지막 두 답변은 인수를 사용하여 제안했습니다. 나는 그런 실행 가능한 솔루션을 코딩 할 수 있다는 것을 알고 있지만 오히려 옵션이 되려고합니다.

edit2 : 설명 요청에 따라이 간단한 예를 사용하겠습니다. 인수가 자동으로 배열로 구문 분석되기 때문에 인수를 처리하기가 상당히 쉽습니다.

./printfile file.txt 1000

사용자가 인쇄하려는 파일의 이름을 알고 싶다면 ArgV [1]를 통해 액세스 할 수 있습니다.

이제이 상황에 대해 :

./printfile file.txt 1000 --nolinebreaks

사용자는 줄이 나지 않고 파일을 인쇄하려고합니다. 프로그램이 실행할 수있는 경우 (파일 이름과 인쇄 할 라인 수) 실행할 필요는 없지만 사용자는 원하는 경우 사용하는 옵션이 있습니다. 이제 다음을 사용하여 다음을 수행 할 수 있습니다.

./printfile file.txt 1000 true

사용 프롬프트는 사용자에게 세 번째 인수가 라인 브레이크로 파일을 인쇄할지 여부를 결정하는 데 사용된다고 알려줍니다. 그러나 이것은 오히려 서투른 것 같습니다.

도움이 되었습니까?

해결책

당신은 "옵션"사이에 몇 가지 근본적인 차이가 있다고 생각하는 것 같습니다.--"그리고"논쟁 "은 그렇지 않습니다. 유일한 차이점은 당신이 그들을 구문 분석하는 것입니다.

GNU를 보는 것이 당신의 시간의 가치가있을 것입니다. getopt()/getopt_long() 옵션 파서. 그것은 다음과 같은 옵션으로 인수를 전달하는 것을 지원합니다 --number-of-line-breaks 47.

다른 팁

명령 줄 인수는 갈 길입니다. 이 작업을 단순화하기 위해 boost.programoptions를 사용하는 것을 고려할 수 있습니다.

정보를 전달하기 위해 두 가지 방법을 사용합니다.

1/ getargs와 같은 특정 라이브러리에서 더 쉽게 처리 할 수있는 명령 줄 인수 사용.

2/ getenv를 사용하여 환경 변수로.

Pax는 여기에 올바른 아이디어를 가지고 있습니다.

더 철저한 양방향 통신이 필요한 경우 파이프로 프로세스를 열고 STDIN/STDOUT에 물건을 보내십시오.

Window의 postMessage () 함수를 사용할 수도 있습니다. 옵션을 이미 실행중인 실행 파일이 이미 실행중인 경우 매우 편리합니다. 이 기술에 관심이있는 경우 몇 가지 예제 코드를 게시 할 수 있습니다.

질문은 상황과 당신이하려는 일에 대해 명확하게 명확하지 않습니다. C ++ 프로그램 내에서 실행 파일을 실행하는 것을 의미합니까? execl (), execv (), execve ()와 같은 이름을 가진 몇 가지 표준 C 라이브러리 함수가 있습니다. BASH 프롬프트, 옵션 및 모두에서 입력 할 내용이 포함 된 문자열을 사용하는 System ()도 있습니다.

나는 POPT 라이브러리를 좋아한다. C이지만 C ++에서도 잘 작동합니다.

그래도 크로스 플랫폼 인 것 같습니다. 일부 Linux 소프트웨어의 Windows 포트 용 API 호환 버전을 해킹해야 할 때 알게되었습니다.

옵션을 .ini 파일에 넣고 사용할 수 있습니다. GetPrivateProfilexxx API .ini에서 원하는 프로그램 옵션 유형을 읽을 수있는 클래스를 만들려면.

또한 앱의 대화식 쉘을 생성하여 특정 설정을 실시간으로 변경할 수도 있습니다.

편집 : 편집에서 "선택적"인 해당 옵션과 관련된 특수 키워드를 찾는 각 옵션을 구문 분석 할 수 없습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top