Возможно ли передать stringstream в качестве параметра функции? Я не знаю, имеет ли смысл то, что я пишу, но я помню, я видел функцию, подобную этой: my_func(ss << "text" << hex << 33); Возможно ли это? Ответ 1 Конечно. Почему бы и нет? Пример объявления такой функции: void my_func(std::ostringstream& ss); Ответ 2 Абсолютно! Убедитесь, что вы передаете его по ссылке, а не по значению. void my_func(ostream& stream) { stream << "Hello!"; } Ответ 3 my_func должен иметь подпись по строкам: void my_func( std::ostream& s ); так как это тип ss << "text" << hex << 33. Если цель для извлечения сгенерированной строки вам нужно сделать что-то вроде: void my_func( std::ostream& s ) { std::string data = dynamic_cast<std::ostringstream&>(s).str(); // ... } Обратите внимание, что вы не можете использовать временный поток; my_func( std::ostringstream() << "text" << hex << 33 ); не будет компилироваться (кроме, может быть, с VС++), так как это не легальный С++. Вы может написать что-то вроде: my_func( std::ostringstream().flush() << "text" << hex << 33 ); если вы хотите использовать временный. Но это не очень удобно. Ответ 4 Да, и Function(expresion) Сначала будет вычислено выражение, и результат его будет передан как параметр Примечание: Оператор < < для ostreams возвращает ostream
Ответ 1 Конечно. Почему бы и нет? Пример объявления такой функции: void my_func(std::ostringstream& ss);
Ответ 2 Абсолютно! Убедитесь, что вы передаете его по ссылке, а не по значению. void my_func(ostream& stream) { stream << "Hello!"; }
Ответ 3 my_func должен иметь подпись по строкам: void my_func( std::ostream& s ); так как это тип ss << "text" << hex << 33. Если цель для извлечения сгенерированной строки вам нужно сделать что-то вроде: void my_func( std::ostream& s ) { std::string data = dynamic_cast<std::ostringstream&>(s).str(); // ... } Обратите внимание, что вы не можете использовать временный поток; my_func( std::ostringstream() << "text" << hex << 33 ); не будет компилироваться (кроме, может быть, с VС++), так как это не легальный С++. Вы может написать что-то вроде: my_func( std::ostringstream().flush() << "text" << hex << 33 ); если вы хотите использовать временный. Но это не очень удобно.
Ответ 4 Да, и Function(expresion) Сначала будет вычислено выражение, и результат его будет передан как параметр Примечание: Оператор < < для ostreams возвращает ostream