Ну, Booger решение было бы переключиться на sprintf()
. Это небезопасно и подвержено ошибкам, но часто быстрее.
Не всегда, хотя. Мы не можем использовать его (или ostringstream) на моей работе в реальном времени после инициализации, потому что выполняем как выделение памяти, так и освобождение.
Наш способ решения этой проблемы - перепрыгнуть через множество обручей, чтобы убедиться, что мы выполняем все преобразования строк при запуске (когда нам еще не нужно быть в режиме реального времени). Я думаю, что была одна ситуация, когда мы записали наш собственный конвертер в массив с фиксированным размером, выделенным из стека. У нас есть некоторые ограничения по размеру, на которые мы можем рассчитывать для конкретных конверсий.
Для более общего решения вы можете рассмотреть возможность написания своей собственной версии ostringstream, которая использует буфер фиксированного размера (с проверкой ошибок на границах, разумеется, в пределах). Это было бы немного работы, но если у вас есть много этих потоковых операций, это может стоить того.