В моем проекте (Unreal Engine 4) у меня нет потока вывода - вместо этого я могу общаться через функцию UE_LOG, которая работает почти так же, как printf()
, Проблема в том, что я просто создал библиотеку .dll (без Unreal), с которой я хочу общаться через iostream
. Моя идея - внутри библиотеки .dll Я использую стандартный cout
для записи сообщений в ostream, я использую все это в функциях Unreal Engine, где я захватываю ostream
в виде строки и вывожу ее в функцию UE_LOG.std :: cout, ostream и другие виды получения выходного потока
Проблема в том, что я всегда рассматривал std::cout
как часть магии, не думая, что на самом деле внутри (я уверен, что большинство из нас). Как я могу справиться с этим? Простые способы не будут работать (например, захват stringstream
и вывод его в UE_LOG).
Оберните этот материал в соответствии с синтаксисом 'std :: ostream'. BIG GRIN: D –
Зачем пропускать потоки, когда вы можете просто передать строки? Пусть функции в DLL принимают аргументы 'std :: string', и если им нужно вернуть строку, верните строку' std :: string'. –
@ joachim-pileborg Да, но функция dll может сделать сложный процесс, и ему придется вызывать до и после выполнения - так что просто захват строки не поможет. –