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
相关产品推荐
相关产品推荐

