Что является более эффективным / аккуратным: очистка существующего потока строк или создание нового? - PullRequest
5 голосов
/ 06 января 2012

Простой вопрос просто из любопытства.

Несколько методов в классе должны использовать поток строк или, в частности, поток строк.

1) Иметь переменную stringstream в качестве члена класса, а затем просто очистить ее перед использованием, т.е. msg.str("")

2) Создайте новую переменную stringstream локально в каждом методе каждый раз, когда вам нужно ее использовать.

Каков наилучший способ реализовать это с точки зрения эффективности и аккуратности?

Моя догадка - вариант 1, но я не уверен, что начальная конструкция в сочетании с каждым вызовом str () будет хуже?

P.S. Я прочитал Инициализация ... какой из них более эффективен? и Что быстрее / эффективнее? , мой следующий шаг - изучить профилирование и написать небольшой тест приложение, но я чувствовал, что вопрос может быть быстрее: -)

1 Ответ

7 голосов
/ 06 января 2012

Не используйте stringstream для начала.Используйте либо istringstream, либо ostringstream, что всегда подходит.И используйте его только один раз;очистка это сложная операция, требующая несколько строк кода, и что-то легко забыть.msg.str("") не начинает обращаться ко всему государству.Вам также необходимо сбросить флаги форматирования, статус ошибки, маску исключения и любую дополнительную информацию о форматировании, заданную в переменных, полученных с помощью xalloc.

...