Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# - stream question

Tags:

c++

c#

stream

When I was writing some I/O routine in C++, I would usually make it as generic as possible, by operating on the interfaces from <iostream>.

For example:

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

How should the same be done in C#?

I suspect I could write my routines based on the System.IO.TextReader or System.IO.TextWriter, but I'm not sure.


Obviously I'm seeking for a same base class in C#, which is as generic as std::istream or std::ostream and which can be extended in many ways (for example, as boost::iostreams extends the std:: streams).

like image 426
Yippie-Ki-Yay Avatar asked Feb 07 '11 19:02

Yippie-Ki-Yay


3 Answers

If you want to work with strings, you should take a TextReader or TextWriter.

If you want to work with bytes, you should take a Stream.

These classes are inherited by concrete implementations such as FileStream, StringWriter, and NetworkStream.

like image 189
SLaks Avatar answered Oct 21 '22 19:10

SLaks


Use System.IO.Stream if you only care about bytes. TextReader / TextWriter are for when you know the underlying data to be text.

like image 21
Kent Boogaart Avatar answered Oct 21 '22 18:10

Kent Boogaart


The base class is Stream. MemoryStream, FileStream, etc. inherit from this class.

like image 1
George Johnston Avatar answered Oct 21 '22 18:10

George Johnston