MQL5语言帮助文件人话版(十二)数据类型之字符串

| 发表于 前天 16:40 | 显示全部楼层 |复制链接
最后由 麻爪 于 2026-9-7 16:42 编辑

第十二章 字符串

一、字符串数据及其写法
字符串(string)是用来保存一段文字文本,比如名字、日志内容、打印提示文字。但代码中的注释内容可不属于字符串,字符串数据多用在名字、标签、日志、外部交互、文件名等情景。

注意,字符串数据是非数字数据,不能用来做运算。

前面介绍字符常量时提到,字符串本质上是一堆字符组成的序列,每个字符都有 ASCII 数字编码

写在代码源码里的固定文本常量,必须用英文双引号 " " 包裹。

string s = "这是一串字符常量";          //双引号包裹,这就是字符串常量,赋值给string类型的变量s

注意,单引号 ' ' 用来放单个字符常量,双引号 " " 才是字符串,不要搞混。

双引号本身是字符串的边界符号。如果你直接写:string str = "他说:"你好"";编译器看到第二个 ",会误认为字符串在这里结束,直接代码报错。想要字符串文本内部出现双引号,就要在引号前面加反斜杠 \ 进行转义(转义符)。

string str = "他说:\"你好\"";
Print(str);
//输出:他说:"你好"

\ 就是转义符:\ + 某个字符,组合成特殊符号塞进字符串里。

二、长字符串数据的拆分写法

MQL5(和 C/C++ 一样)写很长的字符串常量,可以拆成好几段双引号字符串,中间直接换行隔开,编译器编译的时候会自动把几段拼接合并成一整个字符串,不需要写加号、不需要调用拼接函数。目的就是让源代码好看、可读,不用写一整行超长文字。

一行拉得特别长的字符串示例:

string msg = "EA启动,初始化参数,检查品种、周期、仓位,打印日志输出信息";

拆分写法,分成多段,代码更清爽示例:

string msg = "EA启动,初始化参数,"
             "检查品种、周期、仓位,"
             "打印日志输出信息";

三、字符串的拼接
在 MQL5 里,string 字符串支持 + 加号做拼接。

示例:

string a = "市价开仓:";
string b = "EURUSD";
string c = a + b;  
Print(c);                 //输出:市价开仓:EURUSD

还可以可以直接拼接常量、变量混用:

string msg = "当前品种:" + _Symbol + ",价格:";     //_Symbols是MQL5 的内置预定义字符串变量,当前品种的名称,

但数字不能直接和字符串相加,需要转换数据类型:

string s = "手数:" + 0.1;                        //编译报错
string s = "手数:" + DoubleToString(0.1,2);      //把双精度浮点数0.1转化为字符串格式,括号里的2表示保留2位小数

也可以简单写:

string s = "手数:" + "0.1";                      //只要双引号括起来,系统就当这是文本,而不是数字了

用转换函数或者双引号括起来的数字和字符串拼接,效果看起来几乎是一样的。

但实际应用场景有很大不同。如果这个0.1是固定数值,你不需要变化它,那么两种方法没区别。如果这个0.1是变化的,你用双引号就没办法实现了。

比如:

double lot = 0.1;
string s = "手数:"+"0.1";
string s = "手数:" + DoubleToString(0.1,2);

这种情况下,两种写法看上去没啥区别。但lot这个变量是会变化的,它可能是一个分析逻辑分析出来的加仓数量,这种情况下加0.1,另一种情况下加0.2,所以当lot数值变化的时候,下面的写法都不会跟着变,这就失去了设计变量lot的意义。

但我们不能把字符串和变量名字拼在一起,比如:

ouble lot = 0.2;
string s = "手数:"+"lot";   //这种写法相当于把  手数:和字母 lot拼在了一起,跟数字0.2没关系,虽不报错,但没有业务上的意义

string s = "手数:" + lot;       // 这种写法相当于把  手数:和数字0.2拼在了一起,因为数据类型不同,程序会报错        
            
正确的写法是用类型转换函数给变量转换数据类型:

  string s = "手数:" +DoubleToString( lot,2);

这样 手数: 后面拼接的数字,就可以随着变量lot的不同数值变化了。
最近访问 头像模式
举报

评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册