Я использую C++ Builder и пытаюсь медленно перенести код на стандартную библиотеку C++, предпочитая Delphi VCL.Как смешивать std :: stream и Delphi TStream?
VCL имеет поточную архитектуру, основанную на классе TStream
, и вместо этого я переключаюсь на использование std::stream
. Однако в краткосрочной перспективе мне все еще нужен способ «смешивания» двух типов потоков.
Я могу сделать это, используя промежуточные std::stringstream/TStringStream
объектов, но это кажется немного неэффективным и громоздким. Кто-нибудь имеет лучшее предложение?
Редактировать:
TStream предоставляет аналогичные функциональные возможности STD :: потоки, но не является производным от него. Вы можете создавать различные типы потоков (TFileStream, TMemoryStream, TStringStream) и читать/записывать данные в/из них. См. Embarcadero docwiki TStream reference.
Edit:
Пример - Представьте себе, у меня есть зЬй :: ostream, что я написал некоторые вещи, и теперь я хочу, чтобы добавить изображение в формате JPEG на него с помощью TJPEGImage.SaveToStream (ул: TStream) , И, я хочу прочитать его позже из std :: istream ...
Из-за того, что существует 35 000 вопросов с тегами 'C++', но только около ~ 200 тегов 'vcl' или' C++ builder', я делаю вывод, что знание 'TStream' здесь редко. Поэтому вы можете улучшить свой ответ, добавив некоторую информацию о интерфейсе 'TStream'. – sbi
@sbi: Done, thanks – Roddy
Что вы подразумеваете под «смешиванием»? Напишите один поток с одной лирикой и прочитайте с другим? Использовать оба вида потоков одновременно? Пример будет приветствоваться. – 2010-07-08 12:13:24