C # - потоковый вопрос - PullRequest
       5

C # - потоковый вопрос

5 голосов
/ 07 февраля 2011

Когда я писал некоторую подпрограмму ввода-вывода в C++, я обычно делал ее как можно более универсальной, работая на интерфейсах из <iostream>.

Например:

void someRoutine(std::istream& stream) { ... }

Как то же самое должно быть сделано в C#?

Я подозреваю, что мог бы написать свои процедуры на основе System.IO.TextReaderили System.IO.TextWriter, но я не уверен.


Очевидно, что я ищу тот же базовый класс в C#, который является общим, как std::istream или std::ostream и который может быть расширен многими способами (например, boost::iostreams расширяет потоки std::).

Ответы [ 4 ]

5 голосов
/ 07 февраля 2011

Если вы хотите работать со строками, вы должны взять TextReader или TextWriter.

Если вы хотите работать с байтами, вы должны взять Stream.

Эти классы наследуются конкретными реализациями, такими как FileStream, StringWriter и NetworkStream.

3 голосов
/ 07 февраля 2011

Используйте System.IO.Stream , если вам нужны только байты.TextReader / TextWriter для случаев, когда вы знаете, что базовые данные являются текстовыми.

1 голос
/ 07 февраля 2011

Базовый класс равен Stream.MemoryStream, FileStream и т. Д. Наследуются от этого класса.

0 голосов
/ 07 февраля 2011

Вы можете использовать функцию C #, принимающую поток (System.IO.Stream), как в C ++.Если это уместно, зависит от функции, которую вы пишете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...