I 정수 2, 3, 4의 배열을 변환하고자 8 5, 7, 9에 첨부 된 그 행렬의 항목의 문자열 12 1, 0, 6, 10Char Point C++ String의 참조 주소에 메모리 할당?
시계 방향으로 "2, 3, 4, 8, 12, 10, 6, 0, 1, 5, 7, 9"
나는 int * Matrix
과 char * OutBuffer
의 I 선언 그들이
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
를 구현하지? 난 당신이 어디서든 내가 값을 사용하지 않는 BuildStringFromMatrix 기능에서 루프에서, 숫자가 **
'행렬 [j]는 물론'i'에 대해 아무것도 모르기 때문에 두 번째 행으로 이동할 수 없습니다. –
배열을 2D 문자 배열로 원하십니까? 또는 단일 문자열 변수에서? –
코드 및 문제점을 [mcve]로 줄여야합니다. 예를 들어, 단일 'int'를 문자열로 변환 해보십시오. [작은 프로그램을 디버깅하는 방법] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)을 참조 할 수도 있습니다. –