2017-11-06 1 views
0

입력 문자가 문자인지 확인하려고합니다. 그런 다음 소문자 인 경우 대문자로 만드는 함수가 있습니다. 그러나 컴파일 할 때 컴파일 할 때 대문자로 함수를 호출 할 때 이상한 오류가 발생합니다 "인수 1을 'char'에서 'std :: ios_base &'으로 변환 할 수 없습니다. 정확히 'ios_base . &는 '(I는 ios_base & 가정) 여기에 언급 된 주소의 일종 인 코드입니다. 내가 조립 감사로 번역해야합니다 때문에, 나는 그것을 간단한 프로그램 쓰고 있어요문자 함수 내에서 문자 값을 전달할 때 이상한 오류가 발생했습니다.

#include <iostream> 
using namespace std; 

int main() { 

    char userChar; 
    cout << "Please enter a char to be converted to capital: " << endl; 
    cin >> userChar; 

    if ((userChar >= 'a') && (userChar <= 'z')) { 
     char upperCaseChar = uppercase(userChar); 
     cout << "Character capitalized is " << upperCaseChar << endl; 
    } 
    else if (isupper(userChar)) { 
     cout << "Character is already capitalized and is " << userChar << endl; 
    } 

    system("pause"); 
    return 0; 
} 

char uppercase(char ch) { 
     return ch - 'a' + 'A'; 

} 

!

+0

당신은''std :: uppercase' (http://www.cplusplus.com/reference/ios/uppercase/)와 충돌한다는 것을 의미하는'using namespace std'을 가지고 있습니다. –

답변

2

함수를 호출하기 전에 선언해야합니다. 어느 main 전에이 줄을 추가 :

char uppercase(char ch); 

또는 main 전에 될 수있는 전체 uppercase 기능을 이동합니다.

using namespace std을 권장하지 않는 이유에 대한 좋은 예입니다. std::uppercase을 포함하여 std에 많은 것들이 있습니다. 오류 메시지는 전화가 uppercase(userChar); 일 때 표시되는 uppercase의 유일한 정의는 std::uppercase이고 std::ios_base 인수가 필요하기 때문에 오류 메시지가 나타납니다.

나중에 선언되지 않은 다른 함수를 isupper이라고 부릅니다. std::isupper을 의미한다면 #include <cctype>이 필요합니다.

+0

고마워, 이것은 매우 도움이되었다. (필자는 Java 프로그래머로서 컴퓨터 조직 클래스의 C++ 프로그래머로 전환했다.) –

관련 문제