Я пишу небольшое приложение на C ++, чтобы обернуть вокруг обучающей функции opencv haar (а именно cvCreateTreeCascadeClassifier). Функция выдает на консоль целую нагрузку вывода, и я хочу проанализировать этот вывод, чтобы я мог заполнить различные переменные в своем коде.
Функция, которую я хочу использовать, не является частью самой библиотеки openCV; вместо этого он должен быть построен с моим кодом как часть проекта. Все выходные данные функции выполняются через printf.
Вопрос: Можно ли перехватить операторы printf до того, как они окажутся на консоли? Мне удалось перенаправить их с помощью freopen, но это кажется немного неуклюжим, поскольку затем мне нужно проанализировать файл, а затем удалить его после завершения вызова функции. Кроме того, функция, вероятно, будет работать в течение нескольких часов (а, возможно, даже недель!), Поэтому размер файла может быть проблемой, если он постоянно добавляется.
Требования: мне нужно, чтобы это приложение было c ++ и чтобы запускается как в Windows, так и в Linux (но при необходимости нет проблем с операторами условной компиляции). Я также хотел бы иметь возможность видеть мои сообщения cout и cerr на консоли (только не printf).
Мой поиск в Google лишил меня желания жить! Может ли кто-нибудь помочь с решением с помощью примера кода или указателей на места, где я должен искать ответ?
Спасибо