Я просто звоню
std::smatch m;
if (std::regex_search
(std::string (strT.GetString ()),
m,
std::regex ("((\\d[\\s_\\-.]*){10,13})")))
{
...
}
Не могу на всю жизнь понять, как извлечь совпадающие значения из m.
КАЖДУЮ ОДНУЮ страницу на тему пишетэто кутать, что для меня ничего не стоит.Я просто хочу получить то, что было записано в строке, но независимо от того, что я пытаюсь сделать, это вылетает с сообщением об ошибке «несовместимые строковые итераторы».
ОК, поэтому я попробовал еще несколько вещей и был сильно раздраженболее подробно о том, как работает тот же код в онлайн-тестерах, но не на моем компьютере.Я дошел до этой
std::string s (strT.GetString ()) ;
std::smatch m;
if (std::regex_search (
s,
m,
std::regex ("((\\d[\\s_\\-.]*){10,13})")))
{
std::string v = m[ 0 ] ;
}
работы, но эта
std::smatch m;
if (std::regex_search (
std::string (strT.GetString ()),
m,
std::regex ("((\\d[\\s_\\-.]*){10,13})")))
{
std::string v = m[ 0 ] ;
}
не работает по какой-то причине (с несовместимой ошибкой итератора строки).Там наверняка есть какая-то хитрость.Я позволю тому, кто знает, объяснить это.