2017-09-25 6 views
-3

getchar() 함수가 제대로 작동하지 않는 이유를 알 수 없습니다. 나는 10을 얻지 못한다. 2. 제발.getchar() 함수가 작동하는 방식으로 작동하도록 할 수 없습니다. 출력은 is10이 아닙니다. C++

홈페이지() : 결국 나는 '+' '을 구별 할 수 있어야하지만

enter a number: 
220 
10 

-'또는 문자 나 숫자 :

#include <cstdlib> 
#include <iostream> 
#include <fstream> 

using namespace std; 

int main() { 
    int var, newvar; 
    cout << "enter a number:" << endl; 
    cin >> var; 
    newvar = getchar(); 
    cout << newvar; 

    return 0; 
} 

가 여기 내 출력됩니다.

+6

'cin >> var;'에서 남은 줄 바꿈을 캡처 한 것처럼 보입니다. – user4581301

+3

아스키 코드'10'은 줄 바꿈 문자 – vu1p3n0x

+0

입니다.'cin >> var'을 제거해도'2'가 나오지 않으면'50'이됩니다. – vu1p3n0x

답변

1

이 어쩌면 그것을 할 가장 깨끗한 방법이 아니다 그러나 당신은 모든 문자 하나 하나 얻을 수 있습니다 : 당신은 예를 들어 입력하면

#include <iostream> 

using namespace std; 

int main() 
{ 
    int var; 
    cout << "enter a number:" << endl; 
    cin >> var; 
    std::string str = to_string(var); 
    for(int i=0; i < str.length();++i) 
     cout << str.c_str()[i] << endl; 
    return 0; 
} 

"250e5"그것은 단지 를 얻을 것이다 마지막으로 건너 뛰십시오 .

편집 : 이것은 간단한 구문 분석기이며 논리를 수행하지 않습니다. 계산기를 만들고 싶다면 Stroustrup이 자신의 책 에서 C++ 프로그래밍 언어에서 무엇을했는지 살펴볼 것을 권합니다.

int main() 
{ 
    string str; 
    cout << "enter a number:" << endl; 
    cin >> str; 
    for(int i=0; i < str.length();++i) { 
     char c = str.c_str()[i]; 
     if(c >= '0' && c <= '9') { 
      int number = c - '0'; 
      cout << number << endl; 
     } 
     else if(c == '+') { 
      // do what you want with + 
      cout << "got a +" << endl; 
     } else if(c == '-') 
     { 
      // do what you want with - 
      cout << "got a -" << endl; 
     } 
    } 
    return 0; 
} 
+0

감사합니다. 도움이되지만 문제가 해결되지 않습니다. 나는 '+'또는 '-'또는 'a'- 'z'를 읽을 수 있어야합니다. –

+0

@ user443355566644 달성하려는 목표가 명확하지 않습니다. 귀하의 의견을 통해 모든 캐릭터를 하나씩 얻고 싶습니다. 당신은 당신이하고 싶은 것에 더 많은 설명과 함께 당신의 질문을 다시 써야합니다. – Seltymar

+0

신제품에 대해 도움을 주셔서 감사합니다. –