2014-08-31 2 views
0

Если функция принимает std::string&&, существует ли способ передать ostringstream без создания временного потока с полным дублированием базового буфера?C++ move semantics with ostringstream

+0

Почему вы не можете передать 'ostringstream &'? –

+0

Я не уверен, в чем ваш вопрос. Можете ли вы показать код? –

+1

Похоже, что создаст временную строку, а не временный поток. –

ответ

1

В конечном счете вам нужно скопировать буфер, потому что он не в той же структуре, что и std::string, и нет std::string move constructor, который принимает std::ostringstream&&. Метод std::ostringstream::str() скопирует значение буфера в экземпляр std::string. Затем вы можете перемещать эту строку, используя метод, который принимает std::string&&.