C++ - 重载运算符 >> 并使用 C 风格字符串处理输入

标签 c++ dynamic-arrays c-strings

我正在做一项作业,我们必须创建一个“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/

相关文章:

c++ - C++ 中附加的 char* 的奇怪输出

C编程中对字符串的混淆

在 c 中将字符串分成 512 字节的 block

c++ - 如何使用 strcpy_s() 将多个 char* 字符串复制到一个字符串中?

c++ - 如何打印与特定值对应的元素的总和?

c++ - 在转换 IP 时修复 inet_ntoa 中的 Endianess 错误显示反向值

我可以在结构中使用 "int"作为我的动态数组吗?

Excel函数从没有VBA的值构造数组

c++ - fork 后内存损坏

xcode 中的 C++ 程序仅返回 Build Succeeded