2011-11-16 4 views
2

cin.peek() 및 cin.get() 함수에 문제가 있습니다. 일반적으로 입력은 항상 나를 피합니다. 기본적으로, 나는 >>에 대한 오버로드를 사용하여 MyInt 객체에 삽입 할 수있는 문자열 (int보다 길 수있는 문자)을 얻을 수 있도록 노력하고 있습니다. 필자가 작성한 MyInt 클래스에는 myNumber라는 동적 char 배열이 있습니다. resize 함수는 동적 배열의 크기를 새로운 크기로 변경합니다.큰 숫자 저장을위한 get() 및 peek() 도움말

나는 공백을 0-9가 아닌 다음 문자에서

  • 중지를 선도 무시 두 가지
    1. 할 필요가있다. (공백 문자)
    2. 여기

    내가 무엇을 가지고 :

    Enter first number: 14445678954333 
    WHAH WHAH WEE WAH 
    Enter second number: 1123567888999H 
    WHAH WHAH WEE WAH 
    You entered: 
        x = 111111111111113 
        y = 11111111111119 
    
    : 여기
    cout << "Enter first number: "; 
    cin >> x; 
    cout << "Enter second number: "; 
    cin >> y; 
    
    cout << "You entered:\n"; 
    cout << " x = " << x << '\n'; 
    cout << " y = " << y << '\n'; 
    

    은 내가 가진 출력은 다음과 같습니다

    istream& operator>> (istream& s, MyInt& n) 
    // Overload for the input operator                        
    { 
        char c;    // For peeking                       
        int x; 
        MyInt input;  // For storing                       
        unsigned int counter = 0; // counts # of stored digits                  
    
        while (isspace(s.peek())) 
        { 
        c = s.get(); 
        } 
    
        while (C2I(s.peek()) != -1) 
        { 
        x = C2I(s.get()); 
        input.myNumber[counter] = I2C(x); 
        counter++; 
        input.Resize(counter); 
        } 
        cout << "WHAH WHAH WEE WAH\n"; 
    
        n = input; 
    } 
    

    홈페이지 바로이 호출

    나는 학생이고 이것은 '숙제'이다. 모든 숙제와 마찬가지로 나는 접근 할 수없는 비논리적 인 것들을 받았습니다. 이것은 문자열 클래스입니다. 이것은 작품의 아주 사소한 부분이지만 내 측면에는 가시가 있습니다.

  • 답변

    1

    내가 디버거에서 실행 말할 것입니다 당신이 엉망으로 배열을 어디에, 나는 것 알아 크기를 맞춰보세요.

    입력 및 출력이 패턴을 따르므로

    14445678954333 
    111111111111113 
    
    1123567888999H 
    11111111111119 
    

    너는 너무 길어서 처음과 마지막 숫자가 일치하지 않습니다.

    1

    숫자를 읽고 쓸 때 항상 std :: string을 사용하지 않는 이유는 무엇입니까?

    그런 다음 당신이 필요 민트의 변환이다 < ->표준 : : 문자열

    class MyInt 
    { 
        vector<int> Integers; 
    public: 
        MyInt(const string& source) 
        { 
         for (size_t i = 0; i < source.size(); ++i) 
         { 
          Integers.push_back(source[i] - '0'); 
         } 
        } 
    
        MyInt() 
        { 
        } 
    
    }; 
    
    istream& operator>> (istream& s, MyInt& n) 
    { 
        string input; 
        s >> input; 
        n = input; 
        return s; 
    } 
    
    int main() 
    { 
    
        MyInt input; 
        cout << "Enter first number: "; 
        cin >> input; 
    
        return 0; 
    } 
    
    +0

    언급하지 않았지만이 '숙제'에 태그를 지정했습니다. 모든 숙제와 마찬가지로 나는 접근 할 수없는 비논리적 인 것들을 받았습니다. 이것은 문자열 클래스입니다. 메인을 편집 할게. – jordaninternets