我想将数据库查询视为标准C ++输入迭代器。 另一方面,可以将数据库查询视为查询结果项的输入流。 您认为db查询的更好模型是什么 - 输入迭代器还是输入流?
就个人而言,我的印象是C ++ IO流应该仅对字符进行操作,我从未见过任何字符的示例,其中字符不是char
或wchar_t
。我理解,流的模板化本质允许我将任何东西作为一个字符传递,所以从理论上讲,似乎我可以将查询结果项作为一个字符来处理流媒体,但我不确定它是否是一个好主意。
欢迎提出建议。
感谢。
答案 0 :(得分:6)
您用作流式字符类型的任何内容都需要具有字符特征,可能还有一些与区域设置相关的内容,因为有人可能会尝试将区域设置添加到您的流中。这可能是胡说八道,但它仍然存在于界面中,即使你犯了错误,也可能需要让它成为一个明智的错误。
我肯定会使用输入迭代器,在C ++中它是 对象序列的简单模型。
Streams做了很多其他的事情,只是提出了一个序列(格式化,streambuf控制,奥术错误状态模型)。其中大部分可能不适用于您的数据库项目,尽管我想其中一些可能是。例如,控制数据库查询结果流的缓冲区大小是有意义的,但不会对其进行格式化读取。
istream_iterator
存在的事实证明,即使你向某人提供了一个流,他们也可能更喜欢/需要迭代器接口。