Я знаю, что это старая ветка, но я не могу не дать ответ, так как не могу поверить, что до сих пор нет реального ответа. Что вы можете сделать, это перенаправить cout на ostringstream на ваш выбор. Чтобы сделать это, выведите новый класс из streambuf , который отправит поток в OutputDebugString (давайте вызовем этот класс OutputDebugStream ) и создадим экземпляр класса, myStream . Теперь звоните:
cout.rdbuf(&myStream)
Я использовал cout в качестве примера. Эту же технику можно использовать с cerr , просто позвоните
cerr.rdbuf(&myStream).
Stdout немного сложнее, если вы не используете cout . Вы можете перенаправить stdout во время выполнения, используя freopen()
, но это должно быть в файл. Получить это, чтобы перенаправить на экран отладки немного сложнее. Одним из способов является использование fmemopen()
, если оно доступно (не является стандартным), и запись streambuf для вывода этих данных на экран отладки. Кроме того, вы можете перенаправить в файл и записать поток для открытия в качестве ввода и перенаправить в поток отладки. Немного больше работы, но я думаю, что это возможно.