Для определенной программы у меня есть две функции, которые принимают входной и выходной поток, выполняя некоторую операцию на входе и записи на выходе. Я могу назвать их так:Как создавать потоковые операции на C++?
a(cin, cout);
b(cin, cout);
Скажем, я хочу, чтобы запустить их в последовательности, так что обе операции от а и б применяются. В настоящее время я использую stringstream
в качестве промежуточного iostream для хранения результата, например, так:
stringstream buffer;
a(cin, buffer);
b(buffer, cout);
Однако, это в значительной степени сводит на нет использование потоков, как все данные сохраняются в памяти, на промежуточной стадии, даже хотя обе операции могут применяться к потокам с постоянной памятью.
Есть ли (стандартная) техника, которую я могу использовать для объединения этих операций, желательно без изменения a
и b
слишком много? Кроме того, если это возможно, я бы хотел избежать повышения.
Примечание: функции здесь приведены, например, для целей. В реальной программе оба метода используются для двух объектов.
Вы говорите, что вы хотите сделать что-то похожее на StD :: Endl (который на самом деле функция)? – UKMonkey
* Тем не менее, это в значительной степени отрицает использование потоков, поскольку все данные остаются в памяти промежуточного шага, хотя обе операции могут применяться к потокам с постоянной памятью. * Из вашего сообщения неясно, почему это проблема. Я бы подумал, что сохранение данных в памяти будет плюсом с точки зрения производительности. –
@UKMonkey Я не уверен, как это сработает, но если это поможет мне создать функциональность, эквивалентную моей второй выборке кода, да. –