有人知道如何从线上获取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
问题是,我应该使用语法分析吗?感谢。
答案 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;我担心您可能希望能够评估值变量的任意表达式。如果是这样,我建议您定义一个可以评估的非常小的表达式范围,因为即使是简单的数学表达式也需要正确的工作才能正确处理。