2016-09-12 4 views
-2

다음 프로그램은 컴파일되지 않습니다.cin이 typecaset과 함께 작동하지 않습니다.

#include <iostream> 
#include <cstdio> 
using namespace std; 

int main(){ 
    char c; 
    cin >> (int)c;  // stat 1 
    //scanf("%d", &c); //stat 2; this when complied gives warning 
    cout << c << endl; 
} 

cin을 사용하여 문자의 ASCII 값을 받아들이는 방법. 나는 char 변수를 사용하여 그것을하고 싶다.

2. 사용자가 입력 한 값이 문자 범위에 속하는 경우, stat 2항상이 원하는 결과를 생성합니다.

답변

4

예를 들어 다음과 같이 입력 할 수 있습니다. 97 및 출력을 얻으려면 'a'? 그런 다음 실제 int을 읽고 int 변수를 출력의 문자로 변환하십시오. 나는. 지금 당신이하는 것과 거의 반대입니다.

int c; 
std::cin >> c; 
std::cout << static_cast<char>(c); 

입력이 유효한 문자인지 확인하려면 다음을 사용하십시오. std::isalpha 또는 다른 하나의 character classification functions.

+0

감사합니다. @ Joachim-Pileborg. 하지만 내 질문은'cin '과 함께 타입 변환 (int)을 사용하고있다. 당신이 제공 한 설명은 문제를 해결하지만'cin '을 이용한 타입 캐스팅에 대해 알고 싶습니다. –

+2

@DeepakAggarwal'(int) c'는 임시로 생성 되었기 때문에 작동하지 않습니다. '(int) c'는 c를 int *로 취급하지 않습니다. * c *의 값을 가지는 int를 작성합니다. – NathanOliver

+0

@DeepakAggarwal 더 정확하게 말하면, 입력 연산자 함수는 비 const 참조 인수를 취하며'(int) c'는 비 const 참조에 바인딩 할 수없는 rvalue를 만듭니다. –

관련 문제