如何将int转换为char*?

mat*_*ewM 0 c++ constructor type-conversion char

我的问题是我不知道如何将int值转换为char数组char* m_value.我尝试使用itoa但它不起作用.itoa(m_val, m_wartosc, 10);也许有其他功能可以做到这一点?

Main.cpp的

int main(int argc, char *argv[])
{
    LargeNumber l1;
    LargeNumber l3(172839); //how to convert this int to char*

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

LargeNumber.h

    class LargeNumber{

            public:

                LargeNumber()
                { 
                    m_array = "0"; //zero for no arg.
                }
                LargeNumber(int val):m_val(val)
                {
                    itoa(m_val, m_array, 10);  //doesn't work
                    //sprintf(m_array, "%d", m_val);
                }



                LargeNumber(const LargeNumber& p):m_array(p.m_array)
                { }  //copy constructor


                ~LargeNumber(){
                    delete []m_array;     //for object with new    
                }
               public: //should be private
                int m_val;
                char* m_array;

};
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 5

简单的答案是:不要.有两个原因:

  • 从所有(错误的)其他答案中可以看出,内存管理很棘手,容易出错.
  • 我无法看到如何在ASCII字符串中将您的值存储在base-10中可能是有用的.(比如说,基数为2 32的表示.)

但是如果你真的必须这样存储它,你将需要分配相关的内存量,用于snprintf转换(itoa是一个非标准函数),并记住在正确的时间释放内存(你将阅读和理解三法则.

我强烈建议使用一个std::string原始的C风格数组,因为它至少会处理自己的内存管理,然后你就可以使用它来填充它std::stringstream.