我正在做一项作业,我们必须创建一个“MyInt”类,它可以处理比常规整数更大的数字。我们只需要处理非负数。我需要重载 >>
此类的运算符,但我正在努力做到这一点。
我不允许 #include <string>
.
有没有办法:
一个。接受 C 风格字符串的输入
b.解析它并检查空格和非数字(即如果提示符是 cin >> x >> y >> ch,并且用户输入 1000 934H,以接受该输入为两个 MyInts,然后是一个字符)。
我假设它与 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*
以检索其中的整数,并忽略所有空白(+其他?)字符。
请记住,'1'
或 'M'
甚至 ' '
等字符只是映射到 ASCII 表的整数。因此,您可以轻松地将字符从其人类可读的表示法 ('a'
) 转换为其在内存中的值。在 C/C++ 中有很多关于 ascii 表和字符的资源,所以我会让你找到它,但你应该明白了。在 C/C++ 中,字符是数字(char
类型)。
有了这个,您就知道可以对它们执行操作,例如加法或比较。
处理 C 字符串时的最后一件事:它们以 null 结尾,这意味着字符 '\0'
紧跟在它们最后使用的字符之后。
关于C++ - 重载运算符 >> 并使用 C 风格字符串处理输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22674952/