我正在进行一项任务,我们必须创建一个“MyInt”类,它可以处理比常规int更大的数字。我们只需要处理非负数。我需要为这个类重载>>
运算符,但我很难做到这一点。
我不允许#include <string>
。
有办法:
一个。接受输入为C风格的字符串
湾通过它解析并检查空格和非数字(即如果提示是cin&gt;&gt; x&gt;&gt; y&gt;&gt; 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;
}
}
谢谢!对不起,如果这个问题含糊不清,我还是新手。如果我能提供更多信息以便让问题更清楚,请告诉我。
答案 0 :(得分:2)
所以你基本上想要的是解析const char*
以检索其中的整数,并忽略所有空格(+其他?)字符。
请记住,'1'
或'M'
或甚至' '
等字符只是整数,映射到ASCII表。因此,您可以轻松地将字符从其符号人类可读('a'
)转换为其在内存中的值。在C / C ++中有很多关于ascii table和chars的资源,所以我会让你找到它,但你应该明白这个想法。在C / C ++中,字符是数字(类型为char
)。
有了这个,你就会知道你可以对它们进行操作,比如添加或比较。
处理C字符串时的最后一件事:它们以空值终止,这意味着字符'\0'
就位于它们最后使用的字符之后。