假设我有一些内部的文件和流的框架。我有IOutputStream
接口类与write(char const *buffer, size_t size)
和flush()
。我有一个叫做Printer
的工具,它可以用于任何IOutputStream
后代的实例。然后我有Printer & operator<<(T x)
风格的方法,其中T x
是要写入的数据(或其引用或指针)。C++中的流式字符串文字
例如Printer & operator<<(int x)
会将x
转换为字符串,并将调用引用的输出流的write(...)
函数为真。
让我们来看看问题!调用:printer << "appletree";
。它叫Printer & operator<<(char const *s)
。对于这种用法,我必须拨打strlen(s)
来确定大小,然后我可以调用最后一步。这是相当疯狂的,因为我知道编译时的长度为appletree
。
有没有什么好的做法呢? STL的ostream
如何玩titerals?
是为'strlen'性能瓶颈的电话吗?就个人而言,我只需要通过'strlen'调用即可轻松读取代码(假设它不是性能问题)。 – deanWombourne
看到这个[对另一个问题的回答](http://stackoverflow.com/a/11639305/597607),它表明有时编译器能够在编译时计算'strlen(“some text”)''。只要称呼它,并希望最好。就你而言,我敢打赌,无论如何,打印机将成为瓶颈。 –