我有此代码:
string stringToCheck = "text1";
string[] stringArray = { "text1", "testtest", "test1test2", "test2text1" };
foreach (string x in stringArray)
{
if (stringToCheck.Contains(x) == false)
{
// Process...
}
}
所以基本上我想创建的是程序看到字符串“ buy”时,必须将其读取为OP_BUY。由于OP_BUY是MQL4上的内部命令,我该怎么做?还有另一种方法吗?
答案 0 :(得分:4)
enum EXECUTION_COMMANDS
{
buy = OP_BUY,
...
};
现在标识符buy
基本上是一个命名的整数常量,其值与OP_BUY
相同。您可以将buy
和OP_BUY
彼此用作别名。
如果您真的想使用 strings ,则需要创建一个映射,将字符串映射为它们的整数值:
std::unordered_map<std::string, int> command_map = {
{ "buy", OP_BUY },
...
};
然后使用command_map["buy"]
来使用它,它将返回int
的{{1}}值。
答案 1 :(得分:1)
只要去掉引号即可。
枚举器的名称应该是标识符,而不是字符串。
enum EXECUTION_COMMANDS
{
buy = OP_BUY,
sell = OP_SELL,
buyLimit = OP_BUYLIMIT,
sellLimit = OP_SELLLIMIT,
buyStop = OP_BUYSTOP,
sellStop = OP_SELLSTOP
};
但是,如果您希望用它替换源代码中的实际字符串文字,您将感到失望。要么不使用字符串文字,要么,如果您不能将输入更改为字符串,则使用std::map<std::string, int>
引入一些映射。