假設我有一些內部的文件和流的框架。我有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」)''。只要稱呼它,並希望最好。就你而言,我敢打賭,無論如何,打印機將成爲瓶頸。 –