@NooooN
Секьюрник, гык. Лавки вебчик за 300.

Как распарить строку c++?

Добрый день, есть строка типа string с содержимым

smth [f] [data="j",data1="gs"]

Как отсюда в три переменных получить значение "smth", "f", "gs" учитывая, что длинна этих подстрок может быть разная.
  • Вопрос задан
  • 343 просмотра
Решения вопроса 1
MiraclePtr
@MiraclePtr
Если формат данных не будет меняться от случая к случаю, и все аргументы будут присутствовать и идти в обозначенном порядке, то подойдет регэксп вида
(.*)\[f\]\s\[data="(.*)",data1="(.*)"\]

Для конкретной реализации вполне подойдут регэкспы из стандартной библиотеки (en.cppreference.com/w/cpp/regex):
#include <iostream>
#include <regex>
void parse()
{
    std::string var = "smth [f] [data="j",data1="gs"]";
    const std::regex r("<-ваш regex->"); 
    std::smatch sm;
    if (regex_search(var, sm, r))
    {
        cout << sm[1] << sm[2] << sm[3] << endl;
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы