2014-09-02 3 views
1

switch 문을 사용하여 함수 호출을 시작하려고합니다. 명령 행 인수에서 오는 인수에서 switch 문으로 전달되어야하는 값으로 argv []에 저장됩니다. 필자의 경우이 인수는 argv [5]에 저장되어있는 것으로 알려져있다. 내 문제는 제대로 변환하거나 argv [5]에있는 값을 저장하는 방법을 모르므로 switch 문에서 읽을 수 있습니다. 내 변수 '자세한 정보'의 데이터 유형으로 char *, char [] 및 string을 사용해 보았습니다.C++ switch 문, 명령 줄 인수 사용

계속 오류가 있습니다. 문에 정수 유형 ('char *'가 올바르지 않음) 표현이 필요합니다.

char* verbosity = argv[5]; 
cout << endl << verbosity; 

switch(verbosity) 
{ 
case 'vlow': 
{ 
    vlow();//calls vlow function 
    break; 
} 
case 'vmed': 
{ 
    vmed();//calls vmed function 
    break; 
} 
case 'vhigh': 
{ 
    vhigh();//calls vhigh function 
    break; 
} 
default: 
    break; 
} 

난을 argv [에서 문자열을 전달하는 데 사용되어야한다 특정 포맷이 거기에 다음과 같이 스위치 (상세) ^ ~~~~~~~~~

그리고 내 코드는 ] 내 스위치 진술에?

+1

오류는 'switch'문과 함께 해당 데이터 형식을 사용할 수 없다는 것을 알려줍니다. int를 사용해야합니다. –

+0

argv [5]가 문자열로 변환 되더라도 문자열 데이터 형식을 내 switch 문으로 전달할 수 없습니까? 매개 변수로 int 유형 만 사용합니까? – surelyq

+0

보다 정확하게, 정수 또는 열거 형 (정수 또는 열거 형으로 명확하게 변환되는 클래스 유형은 물론) 만 스위치 할 수 있습니다. 그래서'int'뿐만 아니라 'long'도 작동합니다. –

답변

7

'vlow'multicharacter literal이며 문자열 리터럴은 아닙니다.

는 C 스타일의 문자열을 비교 같은 std::strcmp를 사용하려면

if (std::strcmp(verbosity, "vlow") == 0) 
{ 
    //process 
} 

주의 따옴표와 "vlow"의 사용.

+0

도와 주셔서 감사합니다! – surelyq