C++ Парсинг строки между разделителями

Имею строку, которая "прилетает" из паралельного порта и имеет вид: Status<Firmware>17.5</Firmware><SN>23556453</SN>" Каким образом оставить только 17.5 и 23556453 в отдельных переменных? Проект CLR Windows Forms in Visual Studio 2019 Всем заранее спасибо.


Ответы (1 шт):

Автор решения: Maggot

Boost ptree Вам поможет - https://www.boost.org/doc/libs/1_77_0/doc/html/property_tree.html

Вот минимальный пример

#include <iostream>
#include <sstream>
#include <string>

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>

int main() {
  std::string s{"<Firmware>17.5</Firmware><SN>23556453</SN>"};
  boost::property_tree::ptree tree;
  std::istringstream iss{s};
  boost::property_tree::read_xml(iss, tree);
  boost::property_tree::write_xml(std::cout, tree);
  std::cout << std::endl;
  std::cout << tree.get<double>("Firmware") << std::endl;
  std::cout << tree.get<int>("SN") << std::endl;

  return 0;
}
→ Ссылка