То, что вы делаете, как правило, ужасно (гораздо лучше, например, выставить выходной поток журналирования или любое количество средств журналирования Boost), но если вам действительно нужно пройти через это, давайте посмотрим, как это исправить,Прежде всего, vwprintf
печатает на стандартный вывод, а не на строку, поэтому, прежде всего, прочитайте документацию по вашим основным функциям строительного блока.Ближайшая вещь к чему-то полезному будет vswprintf
, которая печатает в широкую строку.Нам все еще нужно наложить произвольный предел размера:
wchar_t buf printbuf[1024];
vswprintf(printbuf, 1024, message, args);
buffer << std::wstring(buffer);
Вам все равно придется добавить какую-то обработку ошибок в случае, если ваш буфер слишком короткий.