Следующий код возвращает пустую строку в ss:
#include <string>
#include <iostream>
#include <sstream>
int main () {
std::ostringstream oss;
oss << "Text";
std::stringstream ss;
ss.basic_ios<char>::rdbuf(oss.rdbuf());
std::cout << ss.str() << "\n";
return 0;
}
Как я могу вернуть из ss текст, представленный в oss? Меня в основном интересует преобразование std::ostringstream в std::stringstream.
oss.str()
вместо этого? Какую реальную проблему вам нужно решить? Сейчас это слишком много XY-проблемы. - person Some programmer dude   schedule 16.04.2020XY problem
(длина не имеет к этому никакого отношения), вы спрашиваете, как исправить недопустимое решение, а не как правильно решить реальную проблему. - person Marek R   schedule 16.04.2020std::cout << ss.str() << oss.str() << "\n";
Это более эффективно, чем пытаться объединить их в один объект только для печати. Если вам нужна одна строка, просто вернитеss.str() + oss.str()
- person NathanOliver   schedule 16.04.2020oss
– это выходной поток. Когда вы делаетеss.basic_ios<char>::rdbuf(oss.rdbuf());
(или сокращение отss << oss.rdbuf()
), вы просите прочитать изoss
. Это не сработает, посколькуoss
предназначено для записи, а не для чтения. - person NathanOliver   schedule 16.04.2020oss
предназначен для записи, а не для чтения. - person NathanOliver   schedule 16.04.2020