相关疑难解决方法(0)

IOStream库有哪些严重的替代方案?(除了cstdio)

我正在寻找一个类似于iostreams的库,它执行转换,并允许写入内存缓冲区,文件和控制台.但是,我喜欢安全的东西,就像iostream一样.有没有严肃的图书馆这样做?

能够指定事物的输出编码将是一个加号.

请注意,我不感兴趣,在图书馆它只是前iostreams的,因为他们只是增加更多的复杂性到什么iostreams的在做,例如boost::format.

PreEmptive注释响应:我不想使用cstdio,因为使用该系统不可能使代码与输出位置无关.也就是说,您必须调用一个函数将事物发送到缓冲区,并且您必须调用另一个函数来将事物发送到文件,而另一个函数则用于控制台等.

编辑2:回应下面的一系列评论:我厌倦了iostreams和cstdio.这里有更具体的原因.我试图让我的"咆哮"脱离这个问题,但人们不断问我是不是我的摇杆,所以这是我的理由.

cstdio

  • 无法正确处理Unicode字符
  • 如果不进行手动缓冲管理,就无法写入字符串之类的内容
  • 通常需要支持非标准扩展(例如vsnprintf)才能使用(编辑:好的,C99的C99标准库现在增加了大部分/全部)
  • 无法在不更改原始代码的情况下更改输出的位置(例如在glibc中的非标准扩展允许您将文件指针视为缓冲区,这样做...但它仍然只是一个非标准扩展)
  • 使安全"有趣"(整个章节专门用于解释问题的安全文档,例如"printf"的格式字符串等)
  • 不安全

输入输出流

  • 对客户来说完全太复杂了.如果你只使用标准库附带的东西,它很棒,但尝试扩展的东西几乎是不可能的.我阅读了整本"标准C++ IOStreams和Locales"一书 - 这本专题中唯一一本看似可用的书 - 两次 - 我仍然不知道发生了什么.

我喜欢iostreams的概念,即使是operator<<某些人似乎不喜欢的用途,但它似乎完全过于设计我.为了成为图书馆的简单客户,有人不应该花费无数个小时阅读书籍.当然,如果你要添加一个新的输出源或类似我能理解的东西,但......客户应该避免这种复杂性.(这不是图书馆的用途吗?)

这是C++中唯一令人痛苦的事情,它在其他编程语言中"正常工作",我认为没有理由变得复杂.

c++ iostream

46
推荐指数
3
解决办法
6343
查看次数

标签 统计

c++ ×1

iostream ×1