2013-03-28 1 views
0

코드를 컴파일하는 동안 오류가 발생했습니다.문자열의 Swtich 케이스

오류 출력 :

 
main.cpp: 35:16: error: switch quantity not an integer 

는 그 이유를 잘 모릅니다. 다음의 코드는 다음과 stringchar 아니다

int Values(string letter) { 
    switch(tolower(letter)) { 
     case 'a' : a.setTotal(); 
     break; 

안부

+2

이것은 자신의 기능을 "느리게"변경합니까? 그것은 무엇을 반환합니까? –

+2

오류 메시지에서 정확히 이해하지 못하는 것은 무엇입니까? – PlasmaHH

답변

4

, 그것은 문자의 배열을 나타내는 오브젝트이다. 해당 기능에 string을 전달하는 대신 char을 전달해야합니다.

tolower(int)은 C++에 존재하며 문자열이 아닌 문자를 사용했습니다. 여기


이 코드에 덜 변경해야이 수정하는 또 다른 방법 : 나는 letterstring 이름으로 판단 길이 1의 될 것입니다 것을 확신하기 때문에

을, 당신은 변경할 수 있습니다 switch 문을 letter[0]에 액세스하면 string의 첫 번째 문자가됩니다. letter[0]tolower으로 전달해야합니다.

2

letter은 문자열이므로 tolower(letter)은 문자열을 생성합니다. 그러나 당신의 경우는 성격 ('a')입니다. 또한 C/C++에서는 문자열 용 스위치를 사용할 수 없습니다. 사용자 대신이 라인 : 당신이 작업 할 같은

스위치 inscrutvion 만 열거 걸립니다
switch(tolower(letter.data[0])) 
+1

+1 : 전환 (tolower (letter [0]))? – qPCR4vir

+0

인덱스 작업 ([])이 std :: string에 대해 오버로드되지 않았다고 생각하십니까? 그러나 확실하지 않음;) – SuB

+1

http://en.cppreference.com/w/cpp/string/basic_string/operator_at – qPCR4vir

0

유형 (열거), 문자 (문자) 또는 정수 (부호없는 INT, 긴이)

0

같습니다 단일 문자. 이것에

int Values(string letter) 

:

는 함수의 매개 변수 변경

int Values(char letter) 

을 그리고 switch 문이 작동합니다.