@Sky404Error

Как спарсить строку с выбором вариантов на C++ Builder?

Есть строка:
Привет {Друг|...|Мир}. Как {ты|...|твои дела}?

Как мне получать разные варианты этой строки?
Например:
Привет Друг. Как ты?
ИЛИ
Привет Друг. Как твои дела?
ИЛИ
...
ИЛИ
Привет Мир. Как ты?
ИЛИ
Привет Мир. Как твои дела?
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
Общий подход предлагаю такой. Заводите std::vector<std::vector<std::string>>. Каждый внутренний вектор хранит варианты выбора для очередного куска строки. В частности, для кусков строки между вариативными частями будем считать, что есть всего 1 вариант выбора. Соответственно, весь вектор векторов — это последовательность таких вариативных частей. Задача делится на 2 части:

1. Парсинг входной строки в нашу структуру. Парсим в цикле, вытаскивая из исходной строки по 1 символу, и аккумулируем в промежуточное состояние. Нам понадобится std::string для текущего варианта и std::vector<std::string> для текущей вариативной части.

2. Самое простое, когда наш вектор векторов заполнен, создаём пустой std::string, и накидываем туда из каждого внутреннего вектора по 1 варианту.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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