1

저는 C++을 처음 접했고 어떻게 동작하는지 이해하려고합니다.커맨드 라인 인수가 아닌 incrementinc argc

int _tmain(int argc, _TCHAR* argv[]) 
{ 
std::wcin.get();//for console window input 
int i=1; 
    // decode arguments 
    if(argc < 2) { 
     printf("You must provide at least one argument\n"); 
     exit(0); 
    } 
    // report settings 
    for (;i<argc;i++) printf("Argument %d:%s\n",i,argv[i]); 

return 0; 
} 

어떻게는 argc와 argv를 작품을 보는 경우 : 그래서 나는 다음 코드가 있습니다. 그러나 얼마나 많은 인수를 콘솔에 입력해도 argc는 증가하지 않습니다. 그것은 1로 남아 있습니다. argv [0]은 프로그램 이름입니다. 나의 입력은 "aaa bbb ccc ddd"와 같습니다. 나는이 argc에 대해 믿는 것이 5이어야합니까? 내가 뭘 잘못 했니? 왜 증가하지 않을까요?

감사합니다.

+4

어떻게 args를 프로그램에 전달합니까? –

+0

콘솔 창에서 wcin.get(); "abc efg xyz"와 같은 인수를 입력합니다. –

+1

@IonutDaniel 프로그램의 콘솔이 열리면 명령 줄 인수가 이미 설정되어 있습니다. 그때가 너무 늦었습니다. –

답변

5

MSVS (signature being _tmain(int argc, _TCHAR* argv[]))를 사용하고있는 것 같습니다. IDE에서 코드를 실행하는 경우 명령 줄이 아닌 프로젝트 설정에서 인수를 지정해야합니다.

test.exe arg1 arg2 

도 제대로 작동됩니다 같은 명령 줄에서 실행

enter image description here

. 당신이하는 일은 논쟁을 수정하지 않습니다.

+0

이봐 요, 고마워 지금 작동합니다. 이것은 매우 유용했습니다.이 경우에는 또 다른 질문이 있습니다. 나는이 "연구"명령 줄 파서 만들려면 다음과 같이 인수가 전달됩니다 : -switch1 argument1-argument2 -switch2 인수.이 경우이 설정을 사용할 수 있습니까? –

+0

@IonutDaniel이 설정은 Visual Studio에서 프로그램을 실행할 때만 작동합니다. 실행 파일을 수동으로 실행하려면 명령 행 옵션을 사용해야합니다. –

+0

조금 더 자세히 설명해 주시겠습니까?이 문제는 나에게 조금 추상적입니다. 다시 한번 감사드립니다. –

2

wcin.get() 호출은 argv 또는 argc에 영향을주지 않습니다. 인수는 프로그램 시작시 맨 처음에 지정됩니다. 명령 줄에 프로그램 이름 바로 뒤에 공백으로 구분하여 지정됩니다.