2013-06-27 173 views
0

我正在開發一個用於交易工具(MultiCharts)的工具DLL。該庫需要使用C++構建才能使用該工具。我的問題是我需要編寫一個可以返回多維數組類型的方法:char*。使用char*而不是字符串的原因是該工具與字符串數據類型不兼容。所以必須使用char*(這是兼容的)。返回多維char *數組

我研究了一下,發現了一些代碼片段,但似乎沒有爲我工作。

char ***signals = new char**[1024]; 

for (int i=0; i<data.size(); i++) 
{ 
    signals[i] = new char*[8]; 

    for (int j=0; j<8; j++) 
    { 
     string instance; 
     char* result; 

     instance = data[i][j]; 

     result = new char[instance.size() + 1]; 
     result[instance.size()] = 0; 
     memcpy(result, instance.c_str(), instance.size()); 

     signals[i][j] = result; 
    } 
} 

上面的代碼片段工作不正常,只存儲垃圾值。我將它作爲控制檯應用程序運行;這裏是調試信息的屏幕截圖:

Image

創建可以具有總的行= 1024個8列(系統的要求)的數據結構。這裏使用的數據是一個具有需要傳遞給工具的值的向量。

任何人有任何想法如何使這項工作?

+3

在C++中,不要返回'char ***'。返回'矢量<矢量>'。 – 2013-06-27 12:14:36

+0

你在哪裏調試存儲的字符值,在發佈模式? –

+0

@ H2CO3感謝您的評論。正如我所提到的,我有這個限制,不會讓我返回字符串數據類型。這就是爲什麼我需要使用char *。 –

回答

0

糟糕的是,這段代碼似乎是正確的。而你的照片並不意味着垃圾,它顯示了一個健康的字符串。

您的問題可能在別處。

另一方面:C風格的數組不能從函數返回。但是你可以返回一個字符*