Получить структуру из разбора строки - PullRequest
0 голосов
/ 28 апреля 2018

кто-нибудь знает, как получить структуру из строки? Например, у меня есть структура:

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 голосов
/ 29 апреля 2018

Предполагая, что все ваши поля разделены общим разделителем (и я правильно понял ваш вопрос), просто разбейте входную строку на разделители и используйте их с помощью функций преобразования строк. что-то вроде:

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;
}

Отказ от ответственности: этот код не был проверен

Теперь, что касается использования вами термина «выражение», я беспокоюсь, что вы можете захотеть оценить произвольные выражения для значения переменной. Если это так, я рекомендую вам определить ОЧЕНЬ малый объем выражений, которые можно оценить, поскольку даже простые математические выражения требуют правильной работы для правильной обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...