Ответ 1
Boost. Spirit Qi для ввода, Boost Spirit. Karma для вывода, Может читать/записывать все, что может быть представлено как диапазон итераторов.
Я ищу библиотеку, которая работает подобно iostreams, поскольку она выполняет преобразования и позволяет записывать в буферы, файлы и консоль памяти. Тем не менее, я бы хотел, чтобы что-то типа было безопасным, как iostream. Есть ли серьезные библиотеки, которые это делают?
Возможность указать выходную кодировку для вещей будет плюсом.
Обратите внимание, что меня не интересуют библиотеки, которые просто фронт iostreams, потому что они просто добавляют больше сложности тому, что делает iostreams, например. boost::format
.
Ответ на предварительный комментарий: я не хочу использовать cstdio, потому что, используя эту систему, невозможно, чтобы код выводил местоположение агностик. То есть вы должны вызвать одну функцию для отправки вещей в буферы, и вам нужно вызвать другую функцию для отправки файлов в файлы, а другую для консоли и т.д.
EDIT2: В ответ на шквал комментариев ниже: мне надоело как iostreams, так и cstdio. Вот более конкретные причины. Я пытался удержать свое "разглагольствование" от этого вопроса, но люди все время спрашивают меня, не покидаю ли я свой рокер, так что вот здесь мое обоснование.
vsnprintf
) для использования (EDIT: Хорошо, стандартная библиотека C99, находящаяся в С++ 11, добавляет большинство/все из них сейчас)Мне нравится iostreams в концепции, даже использование operator<<
, которое некоторым людям кажется не нравится, но, похоже, оно слишком переработано для меня. Кому-то не нужно тратить бесчисленные часы на чтение книг, чтобы быть простым клиентом вашей библиотеки. Конечно, если вы добавляете новый источник вывода или что-то подобное, я мог бы понять, но... клиенты должны быть защищены от этой сложности. (Разве это не библиотека для?)
Это единственное, что болезненно в С++, которое "просто работает" на других языках программирования, что я не вижу причин для сложностей.
Boost. Spirit Qi для ввода, Boost Spirit. Karma для вывода, Может читать/записывать все, что может быть представлено как диапазон итераторов.
Вам может быть интересна Fast Format библиотека. Вы можете увидеть сравнение на своем сайте с другими другими библиотеками.