is there some "StringToEnum" function or an alternative? - page 4

 

You don't need StringToEnum() for your use case, I am sure 100% 

 

I've rewritten Alain's function a bit and now it's a bit more general.

template<typename ENUM>
bool StringToEnum(const string string_enum, ENUM& out, int min=0, int max=255)
  {
   #define TF_COUNT (22)
   int
      arr_period[TF_COUNT] =
        {
         PERIOD_CURRENT,
         PERIOD_M1, PERIOD_M2, PERIOD_M3, PERIOD_M4, PERIOD_M5, PERIOD_M6, PERIOD_M10, PERIOD_M12, PERIOD_M15, PERIOD_M20, PERIOD_M30,
         PERIOD_H1, PERIOD_H2, PERIOD_H3, PERIOD_H4, PERIOD_H6, PERIOD_H8, PERIOD_H12, PERIOD_D1, PERIOD_W1, PERIOD_MN1
        };
   bool
      is_tf = false;
   if(typename(ENUM) == "enum ENUM_TIMEFRAMES")
     {
      min = 0;
      max = TF_COUNT - 1;
      is_tf = true;
     }
   for(int i = min; i <= max; i++)
     {
      out = (ENUM)(is_tf ? arr_period[i] : i);
      if(string_enum == ::EnumToString(out))
         return(true);
     }
   out = ENUM(min - 1);
   return(false);
   #undef TF_COUNT
  }