将字符串的值存储到char数组中

时间:2017-02-16 18:18:15

标签: c++ arrays string uint8t

我正在尝试创建一个Big Integer类但遇到了一个问题。我有一个重载的构造函数,它给了我一些问题。它应该接受一个字符串并将该字符串转换为名为std::uint8_t*的{​​{1}},跟踪数字位数,并跟踪为每个m_number分配的空间。数字向后加载,最低有效数字为std::uint8_t*。我遇到的问题是将'0'存储到数组中。该函数适用于任何其他值,但如果字符串中包含“0”,则该函数将停止将值存储到m_number[0]中。 这是我的班级定义:

std::uint_8*

这是我的重载构造函数:

      class BigInteger
    {
    public:
        BigInteger add(const BigInteger& rhs);
        BigInteger multiply(const BigInteger& rhs);
        void display();
        BigInteger();
        BigInteger(const BigInteger& rOther);
        BigInteger(int);
        BigInteger(std::string);
        BigInteger& operator=(const BigInteger & rhs);

    private:
        std::uint8_t* m_number;
        unsigned int m_sizeReserved;
        unsigned int m_digitCount;
}

1 个答案:

答案 0 :(得分:0)

问题是uint8_t被视为无符号字符。

因此,如果你通过cout传递它,它会将你的0解释为ASCII的索引,即'\ 0'并停止。 因此,您必须确保cout不会将整数信息解释为字符信息。

有关解决方案和更多信息,请参阅此处: uint8_t can't be printed with cout