You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MQL4中如何清空二维数组?ArrayInitialize报错的解决方法

解决MQL二维字符串数组清空的问题

报错原因

ArrayInitialize函数仅支持数值类型数组(如int、double、bool等),你的order_data是字符串类型的二维数组,该函数没有适配字符串类型的重载,因此调用时会出现重载不匹配的报错。

正确实现方法

字符串数组无法通过ArrayInitialize批量初始化,需要手动遍历每个元素设置为空字符串。根据你的需求,提供两种场景的实现:

1. 清空整个二维数组

可以封装一个通用的清空函数,方便在循环中调用:

void ClearString2DArray(string &arr[][])
{
    int rowCount = ArraySize(arr);
    for(int i = 0; i < rowCount; i++)
    {
        int colCount = ArraySize(arr[i]);
        for(int j = 0; j < colCount; j++)
        {
            arr[i][j] = "";
        }
    }
}

// 在循环中使用示例
for(int iter = 0; iter < yourLoopCount; iter++)
{
    // 清空数组
    ClearString2DArray(order_data);
    
    // 重新填充数组逻辑
    order_data[0][0] = "new_val";
    // ... 其他赋值操作
}

2. 仅清空指定的2个索引行

如果只需要清空索引0和1的两行,可以缩小循环范围:

// 清空目标两行
for(int i = 0; i < 2; i++)
{
    int colCount = ArraySize(order_data[i]);
    for(int j = 0; j < colCount; j++)
    {
        order_data[i][j] = "";
    }
}

补充说明

如果你的数组是通过ArrayResize动态调整过大小的,上述代码依然有效,因为ArraySize会返回数组当前的有效长度。

内容的提问来源于stack exchange,提问作者rerat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:52:41