从行解析获取结构

时间:2018-04-28 20:26:49

标签: c++ parsing

有人知道如何从线上获取struct吗?例如,我有struct:

struct Variable {
    Variable(){}
    string m_name = "";
    uint_16 value = 0;
    string comments = "";
}

行的一些变体:

string line = "foo 0x22 #Comments"; //hex value

string line = "foo 222 #Comments"; //decimal value

string line = "foo ((1<4)&2) #Comments"; //expression value

string line = "foo ((1<4)&2)"; //without comment

问题是,我应该使用语法分析吗?感谢。

1 个答案:

答案 0 :(得分:0)

假设您的所有字段都由一个公共分隔符分隔(并且我已正确理解您的问题),只需在分隔符处分解输入字符串并使用字符串转换函数使用它们。类似的东西:

Variable parseVariable(const std::string& line)
{
   Variable variable;

   // You must define 'split'
   std::vector<std::string> inputFields = split(line, " ");
   variable.m_name = inputFields[0];

   // You must also define 'convertStringToUint16'
   variable.value = convertStringToUint16(inputFields[1]);

   if(inputFields.size() > 2)
   {
      variable.comments = inputFields[2];
   }

   return variable;
}

免责声明:此代码尚未经过测试

现在,关于你使用术语&#34;表达&#34;我担心您可能希望能够评估值变量的任意表达式。如果是这样,我建议您定义一个可以评估的非常小的表达式范围,因为即使是简单的数学表达式也需要正确的工作才能正确处理。