假设我有一些内部框架用于文件和流。我有一个
例如
让我们看看问题!调用:
有没有好的做法?STL 的
IOutputStream
接口类,其中包含 write(char const *buffer, size_t size)
和 flush()
方法。我有一个名为 Printer
的工具,可与任何 IOutputStream
后代一起使用。然后我有 Printer & operator<<(T x)
风格的方法,其中 T x
是要写入的数据(或对其的引用或指针)。例如
Printer & operator<<(int x)
将把 x
转换为字符串,并调用引用输出流的 write(...)
函数进行实际写入。让我们看看问题!调用:
printer << "appletree";
。它会调用 Printer & operator<<(char const *s)
。对于这种类型的用法,我必须调用 strlen(s)
来确定大小,然后才能调用最终步骤。这相当不合理,因为我在编译时就知道了 appletree
的长度。有没有好的做法?STL 的
ostream
如何处理文字?
strlen
是否会成为性能瓶颈?个人而言,我会选择承受strlen
调用的代价,以保持代码简洁易读(假设这不会影响性能)。 - deanWombournestrlen("some text")
。只需调用它,然后希望一切顺利。在你的情况下,我打赌打印机无论如何都会成为瓶颈。 - Bo Persson