Вы не можете передать matches[1]
(объект типа sub_match<T>
) в printf таким образом. Тот факт, что он дает любой полезный результат, - это то, на что вы не можете рассчитывать, так как printf ожидает указатель на символ. Вместо этого используйте:
cout << "Found " << matches[1] << endl;
Или, если вы хотите использовать printf:
printf("Found %s\n", matches[1].str().c_str());
Вы можете получить объект std :: string с результатом, используя matches[1].str()
.