2014-03-26 4 views
0

정규 int보다 큰 숫자를 처리 할 수있는 "MyInt"클래스를 만들어야하는 할당 작업을하고 있습니다. 우리는 음수가 아닌 숫자 만 처리하면됩니다. 이 클래스에 >> 연산자를 오버로드해야하지만이를 수행하는 데 어려움을 겪고 있습니다.C++ - 연산자 >> 오버로드 및 C 스타일 문자열을 사용하여 입력 처리

나는 허용되지 않습니다. #include <string>.

A :

이는 방식입니다. C 스타일 문자열로 입력 허용
b. 이를 분석하고 공백과 숫자가 아닌지 확인하십시오 (예 : 프롬프트가 cin >> x >> y >> ch 인 경우). 사용자가 1000 934H를 입력하면 해당 입력을 두 개의 MyInts와 char로 받아들입니다.

가 나는 peek()get() 함께 할 수있는 뭔가가 있으리라 믿고있어,하지만 그들이 와서 어디 있는지 알아내는 데 문제가 있어요.

을 나는 오히려 그것을 어떻게 정확하게을 을 모르는 것! 그냥 올바른 방향으로 나를 가리 키십시오. 이 클래스가 무엇인지에 대한 아이디어를 얻을 수 있도록 여기에

, 내 생성자이다 (나는 또한 const char *에 대한 변환 생성자가 있습니다.

MyInt::MyInt (int n) 
{ 
    maxsize = 1; 

    for (int i = n; i > 9; i /= 10) { 
     // Divides the number by 10 to find the number of times it is divisible; that is the length 
     maxsize++; 
    } 

    intstring = new int[maxsize]; 

    for (int j = (maxsize - 1); j >= 0; j--) { 
     // Copies the integer into an integer array by use of the modulus operator 
     intstring[j] = n % 10; 
     n = n/10; 
    } 
} 

감사합니다! 죄송합니다이 질문이 모호한 경우, 나는 여전히 새로운 해요

답변

2

그래서 기본적으로 const char*을 구문 분석하여 그 내부의 정수를 검색하고 모든 공백 (+ 다른 사람?)을 무시하는 것으로 알려 주시면 감사하겠습니다. 문자.

또는 'M' 또는 심지어 ' '과 같은 문자는 ASCII 테이블에 매핑 된 정수임을 기억하십시오. 따라서 사람이 읽을 수있는 표기법 ('a')에서 메모리에있는 값으로 문자를 쉽게 변환 할 수 있습니다. C/C++의 ascii 테이블과 chars에 대한 많은 소스가 있으므로 찾을 수 있도록하겠습니다.하지만 아이디어를 얻어야합니다. C/C++에서 문자는 숫자 (char)입니다.

이렇게하면 추가 또는 비교와 같은 작업을 수행 할 수 있다는 것을 알게됩니다.

C 문자열을 처리 할 때 마지막 항목 : null로 끝나는 문자로 '\0'은 마지막으로 사용 된 문자 바로 뒤에 있습니다.

+0

'const char *'를'istream &'의 리턴 타입으로 어떻게 파싱 할 수 있습니까? – user1888527

+0

@ user1888527 당신이'const char *'입력을하고 싶다고 생각했기 때문에 그것에 집중했습니다. 나는 나중에 'istream'에 대한 나의 응답을 편집 할 것이고, 그 순간은 죄송합니다. 자신을 시험해보고 싶다면 기본적으로 C 문자열과 동일하지만 istream 인터페이스를 사용하는 것이 원칙입니다. –