C# - 流问题

发布于 2024-10-16 10:09:33 字数 558 浏览 3 评论 0原文

当我用 C++ 编写一些 I/O 例程时,我通常会通过在 的接口上进行操作,使其尽可能通用。

例如:

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

如何在 C# 中完成同样的操作?

我怀疑我可以基于 System 编写例程.IO.TextReaderSystem.IO.TextWriter,但我不确定。


显然我正在寻找 C#,与 std::istreamstd::ostream 一样通用,并且可以通过多种方式进行扩展(例如,boost::iostreams 扩展了 std:: 流)。

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).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我最亲爱的 2024-10-23 10:09:33

如果您想使用字符串,您应该使用 TextReaderTextWriter

如果您想使用字节,则应该采用Stream

这些类由具体实现继承,例如 FileStreamStringWriterNetworkStream

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.

谜泪 2024-10-23 10:09:33

如果您只关心,请使用 System.IO.Stream字节。 TextReader / TextWriter 适用于当您知道底层数据是文本时。

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

清醇 2024-10-23 10:09:33

基类 Stream。 MemoryStream、FileStream等继承自该类。

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

云淡风轻 2024-10-23 10:09:33

您可以让 C# 函数采用 Stream ( System.IO.Stream ),就像在 C++ 中一样。这是否合适取决于您编写的函数。

You can have the C# function taking a Stream ( System.IO.Stream ) as in C++. If this is appropriate depends on the function you write.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文