如何将空格放在变量名中?

时间:2015-05-25 13:12:54

标签: c++ variables mql5

我想学习如何在变量名中添加空格。

我知道有很多语言阻止我这样做,但我相信有一个技巧可以做到这一点因为我看到有人在 MQL5

中做了这件事

MetaTrader终端允许显示用于{input |中声明的externExpert Advisor变量的MMI辅助设置值的UI对话面板Technical Indicator | Script}代码,在代码执行启动期间。

(参见下图):A MetaTrader Termina Dialogue Panel for setting values for <code>input</code> and <code>extern</code> variables on { Expert Advisor | Technical Indicator | Script } code-execution launch

6 个答案:

答案 0 :(得分:2)

C++中,您无法在变量名称中添加空格,但可以使用std::map获得所需内容。

例如:

#include <map>
#include <string>

int main()
{
    std::map<std::string, std::string> vars;

    vars["Time Frame"] = "15 minutes";
    vars["Indicator Period"] = "16";
    // ... etc

}

std::map关联容器,可将一个std::string映射到另一个

根据您打算如何使用地图,您可能还需要考虑使用std::unordered_map,它应该具有更高的性能但不会保持按键排序并且可能具有更高的内存的使用。

答案 1 :(得分:2)

如果你真的想成为邪恶,你有时可以使用从左到右的标记U+200E,它看起来像一个常规空间但通常不被认为是空白。不同的语言和/或特定平台可能表现不同。

这个技巧seems to work in C#显然你可以做similar things in ruby

我尝试使用g ++,幸运的是,每个人的理智都是不允许的:

foo.cc:5:10: error: non-ASCII characters are not allowed outside of literals and identifiers
    int a<U+200E> b = 3;

请不要在恶作剧和愚人节笑话之外这样做。

答案 2 :(得分:1)

据我所知,没有任何选项可以为变量名添加空格。

答案 3 :(得分:1)

在名称中使用空格(无论是文件名,变量名还是别的)的麻烦在于,您需要使用其他机制来确定此名称的一部分以及下一部分代码的一部分。您的示例看起来像一个表单,因此它具有自己的格式和结构。

SQL确实允许你引用&#34;引用&#34;带有[name with space]或反引号`name with space`的变量名。

大多数其他语言不允许变量名中的空格,因为任何whitedspace都被视为不同词汇单元[不同名称/单词/变量]的分隔符。你无法改变这一点,因为它会改变正常代码的含义&#34;。大多数语言允许/使用_作为名称中的&#34;空格&#34;字符。

当然,如果你有&#34;变量&#34;这是您自己的构造,例如从数据库或文件中读取,您可以使用自己的语法,并使用例如std::map<std::string, sometype>std::unordered_map<std::string, sometype>将数据中的字符串连接到相应的值。< / p>

答案 4 :(得分:1)

C ++中使用空格(空格)来隔离关键字和变量名,因此它们不能存在于变量名中,或者编译器会将文本视为多个标识符。

示例 - 有效:static const unsigned int my_variable = 6U;

如果myvariable之间有空格,编译器如何知道哪个是变量名?如果这里有两个变量,那就没有意义了。

另外,正如您所看到的,语句中可能有多个关键字。

答案 5 :(得分:1)

我找到了解决方案。
在Mql5中,当您在变量名称旁边添加注释时,它将显示而不是变量名称。 见图:http://prntscr.com/79vaae