Taraflex
@Taraflex
Ищу работу. Контакты в профиле.

Аналог QStringBuilder для ванильного с++. Где взять?

Где взять аналог QStringBuilder для ванильного с++?
Чтобы также можно было красиво и эффективно std::строки конкатенировать без лишнего выделения памяти.
В стиле
std::string val = "hello world";
int p = 100500;
std::string result = '[' % val % " : " %  p % ']';


UPD.
Про std::stringstream мне прекрасно известно. Интересует именно приятный синтаксис.
  • Вопрос задан
  • 363 просмотра
Решения вопроса 1
Taraflex
@Taraflex Автор вопроса
Ищу работу. Контакты в профиле.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C++
std::stringstream

По поводу "лишнего выделения памяти" - это надо брать реализации и сравнивать (т.е. не могу сказать насколько QStringBuild лучше/хуже std::stringstream), но, как говорится, look&feel почти такой же. Вместо процентиков поставьте <<, а потом вызовите .str()
Ответ написан
#include <boost/format.hpp>
#include <iostream>

int main() {

        std::string val = "hello world";
        boost::format f("[%s : %i]");
        int p = 100500;

        std::cout << boost::str(f % val % p) << std::endl;
        std::cout << boost::str(f % val % (p - 1)) << std::endl; //Can be reused
        std::cout << boost::str(boost::format("Hello, %s!") % "@Taraflex") << std::endl; //Can be initialized in place

        return 0;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы