【问题标题】:Returning Multi-Dimensional char* Array返回多维 char* 数组
【发布时间】:2013-06-27 12:12:40
【问题描述】:

我正在为交易工具 (MultiCharts) 开发实用程序 DLL。该库需要在 C++ 中构建,该工具才能使用它。我的问题是我需要编写一个可以返回类型为:char* 的多维数组的方法。使用char* 而不是字符串的原因是该工具与字符串数据类型不兼容。所以必须使用char*(兼容的)。

我进行了一些研究,发现了一些代码 sn-ps,但似乎没有一个对我有用。

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;
    } 
}

上面的 sn-p 不能正常工作,只存储垃圾值。我将它作为控制台应用程序运行;这是调试信息的截图:

创建的数据结构可以有总行数 = 1024 和 8 列(系统要求)。这里使用的数据是一个向量,其中包含需要传输到工具的值。

任何人有任何想法如何使这项工作?

【问题讨论】:

  • 在 C++ 中,不要返回 char ***。返回vector&lt;vector&lt;string&gt; &gt;。
  • 你在哪里调试存储的 char 值,在发布模式下?
  • @H2CO3 感谢您的评论。正如我所提到的,我有这个约束不允许我返回字符串数据类型。这就是为什么我需要使用 char*。
  • @thomas 没有。我是在调试模式下完成的。
  • @Master.Aurora 好的,我明白了。我真的看不出代码有什么问题,但让我试试看。

标签: c++ arrays string data-structures char


【解决方案1】:

虽然很糟糕,但这段代码似乎是正确的。而且你的图片并不意味着垃圾,它显示了一个健康的字符串。

您的问题可能出在其他地方。

另一方面:不能从函数返回 C 样式的数组。但是你可以返回一个字符*。

【讨论】:

    猜你喜欢
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多