정규 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;
}
}
감사합니다! 죄송합니다이 질문이 모호한 경우, 나는 여전히 새로운 해요
'const char *'를'istream &'의 리턴 타입으로 어떻게 파싱 할 수 있습니까? – user1888527
@ user1888527 당신이'const char *'입력을하고 싶다고 생각했기 때문에 그것에 집중했습니다. 나는 나중에 'istream'에 대한 나의 응답을 편집 할 것이고, 그 순간은 죄송합니다. 자신을 시험해보고 싶다면 기본적으로 C 문자열과 동일하지만 istream 인터페이스를 사용하는 것이 원칙입니다. –