我正在编写一个可以读/写特定格式文本文件的类。我考虑过继承std::iostream
,但在搜索Google时,我发现了一些我不应该从std::iostream
继承的意见/建议。
是否有理由避免直接从std::iostream
继承?我应该继承一些更低级别的东西,比如std::basic_iostream
吗?
答案 0 :(得分:2)
iostream采用各种格式的数据,并将其转换为发送到流缓冲区的字节流。通过调用关联语言环境中的格式化函数(例如,决定数字是否应表示为1.234,56
或1,234.56
或1234.56
是否为> 到当地)。
根据区域设置格式化数据后,将其写入流缓冲区。流缓冲区将格式化数据转换为适合外部文件的格式(例如,处理UTF-8与UTF-16与ISO-8859的对比)。
因此,您几乎不可能想要更改iostream来更改格式。如果要更改单个项目的格式,可以通过更改区域设置来实现。如果要更改结果转换为外部文件格式的方式,则需要更改文件缓冲区。