mql5语言的特点、微妙之处以及技巧 - 页 162

 
Nikolai Semko:


对于包括字符串或动态数 组或类引用的结构和类,sizeof()会把矛头指向天空。

而且我可以理解 :-)

 
Nikolai Semko:


mql中的字符串类型非常复杂,而且在文档中没有完全披露。
但从C语言中可以猜到,char数组(缓冲区)被包裹在字符串类型中
然后你开始跳舞,了解它的工作原理 ))

 
Roman:

mql中的字符串类型是非常棘手的,在文档中没有完全披露。
但C语言表明,字符串类型是一个char数组(缓冲区)。
然后你开始跳舞,了解它的工作原理 ))

C语言中没有字符串。

 
Maxim Kuznetsov:

对于包括字符串或动态数 组或类引用的结构和类,sizeof()会把矛头指向天空。

而且我可以理解 :-)

但为什么呢?
对于任何动态数组,它将显示动态数组对象的大小,在MQL5中是52字节。


 
Nikolai Semko:

C中没有丁字裤。

我认为已经有了,但这不是问题的关键。
是的,C语言有char[],它被包裹在mql字符串中

 
Nikolai Semko:

但为什么呢?
对于任何动态数组,它将显示动态数组对象的大小,在MQL5中是52字节。

它将显示什么和谁的尺寸?

52字节是他们的内部设备而已。

为什么不是64是不清楚的,他们可能已经对齐了:-)

 
Roman:

我认为已经有了,但这不是问题的关键。
是的,C语言有char[],它被包裹在mql字符串中

嗯,我理解。
我根本不使用字符串函数。我立即用StringToCharArray函数将它们转换为一个char数组,然后用这个数组工作。我发现它的效率要高得多。

特别是当涉及到解析的时候。

 
Maxim Kuznetsov:

它将显示什么和谁的尺寸?

52个字节只是他们的内部结构。

不清楚为什么不是64,他们可以把它对齐 :-)

可能是某种具有不同类型的结构。例如,5个ulong和3个uint。也许时间是存在于内部处理和最后访问的时间。我不知道。谁知道这个结构可能包含什么。

 
Nikolai Semko:

嗯,这是可以理解的。
我根本不使用字符串函数。我立即用StringToCharArray函数将它们转换为一个char数组,然后用这个数组工作。我发现它的效率要高得多。

最有可能的是,mql字符串是short[] 或wchar_t[] 或wchar_t*。
毕竟,mql字符串是Unicode的,而utf是2字节的。
而StringToCharArray从short[]转换为char[]。

 
Roman:

而且很可能在mql字符串下有short[] 。
毕竟,在mql中,Unicode中的字符串有2个字节。
而StringToCharArray是将short[]转换为char[]。

我没有注意到。虽然我不排除在某些情况下(在使用Unicode时)是可以的。例如,在Java中,char类型是2字节。
我试着用两种方式解析加密交易所的数据:通过这个JSON库 和通过使用char数组工作。
结果发现,按速度计算,差异是700(!!!)倍。我很震惊。也许这远远不是最好的JSON实现。