字符串内存分配到C ++字符串的引用地址?

时间:2017-03-29 13:32:57

标签: c++ pointers reference ascii memory-address

我想转换一个整数数组 2,3,4,8 5,7,9,12 1,0,6,10,

到一个字符串,该字符串以顺时针顺序附加该矩阵的条目  “2,3,4,8,12,10,6,0,1,5,7,9”。

我必须保持int * Matrixchar * OutBuffer的声明

int main()
{
    int matrixArray[rowCount][columnCount] =
    {   {2, 3, 4, 8},
        {5, 7, 9, 12},
        {1, 0, 6, 10}};

    int * matrix;
    string prebuffer;
    char  * outBuffer;

    outBuffer = new (nothrow) char[24];
    matrix = &matrixArray[0][0];

    BuildStringFromMatrix(matrix, rowCount, columnCount, outBuffer);
}

在传入之前我声明并解决了所有指针。但是,我不确定是否要为outBuffer分配内存以正确存储预缓冲的字符?

void BuildStringFromMatrix(int* Matrix, int NumRows, int NumColumns, char * OutBuffer)
    {
        string prebuffer;
        bool stringLeft = true;
        int i = 0;

        while (stringLeft)
        {
            int clockwiseDir[12] = { 1,1,1,4,1,1,0,4,-4,-1,-1,-1 };

            prebuffer = to_string(Matrix[i]) + ", ";
            OutBuffer = new char [prebuffer.length() + 1];
            cout << prebuffer;
            i += clockwiseDir[i];

            if (i == 6)
            {
                prebuffer = to_string(Matrix[i]) + " ";
                cout << prebuffer;
                stringLeft = false;
            }
        }
    }

**当我没有实现OutBuffer时,我可以顺时针方式访问和打印矩阵

但是我如何使用OutBuffer来引用和打印预缓冲内容? 我需要数字才能在ASCII表上显示不可打印的符号

提前致谢:) **

1 个答案:

答案 0 :(得分:-3)

首先,在BuildStringFromMatrix函数下的循环中,你没有在任何地方使用你的i值。 其次,matrix = matrixArray应该没问题。