есть строка:
std::string init;
std::getline(std::cin,init);
как выполнить поиск подстроки, в которой будет содержаться нечто, соответствующее регулярному выражению, а затем еще какая-то подстрока?
например, нечто соответствующее такому регулярному выражению: "\s\d+\s", а сразу после подстрока: "пример."
необходимо определить местоположение(номер первого/последнего символа) такого вхождения
Стандартная библиотека с++ начиная с С++11 предоставляет средства для работы с регулярными выражениями. (Заголовочный файл: regex
)
Пример использования.
#include <iostream> // std::cout
#include <regex> // regex tools
#include <string> // std::string
int main()
{
std::string str{ "To be, or not to be, that is the question..." }; // исходная строка
std::regex rex{ "(\\S+)" }; // регулярное выражение
std::sregex_iterator beg{ str.cbegin(), str.cend(), rex }; // итератор
// на начало последовательности найденных совпадений
std::sregex_iterator end{}; // 'нулевой' итератор
for (auto i = beg; i != end; ++i)
{ // проходим по всем совпадениям: выводим значения (*1),
// их индексы относительно начала исходной строки
// и длину совпадаемой строки
std::cout << i->str() << "(" << i->position() << ") ["
<< i->length() << "]\n";
}
}
(*1) - необходимо учесть что метод str
возвращает новый объект std::string
И чтобы узнать индекс последнего символа вхождения можно провести нехитрые вычисления
auto last_index = i->position() + i->length() /* - 1 при надобности*/;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Интересует такой вопрос: как прочитать файл, представленный потоком(std::ifstream) используя k процессов с использованием fork()? Знаю как обработать...
Добрый день я являюсь новичком в области C++ и тут возникла интересная проблема совместимости новых библиотек со старыми ОСНапример есть...
Как лучше импортировать вodt из Qt? Есть много примеров как в Word импортировать, но в