有沒有辦法讓sprintf直接把結果寫到給定的ostream?C++:sprintf直接到ostream
我需要這個,因爲我有代碼,不會每秒數千次電話到sprintf
在緩衝器複製到一個ostream:
while(..)
{
..
char buf[64];
sprintf(buf, ..)
oss << buf;
}
有沒有辦法讓sprintf直接把結果寫到給定的ostream?C++:sprintf直接到ostream
我需要這個,因爲我有代碼,不會每秒數千次電話到sprintf
在緩衝器複製到一個ostream:
while(..)
{
..
char buf[64];
sprintf(buf, ..)
oss << buf;
}
我不知道任何方式做到這一點,但你當然不需要它。
ostream
是專門設計,以避免類printf格式化,所以我相信任何的printf/sprintf的格式輸出可以重新設計直接在ostream
進行操作。只需使用<< overloaded operato即可進行格式設置。
不,C函數與stl容器沒有共同之處。
爲什麼不全部消除sprintf和直接把所有輸出字符串流:
ss << " some string " << 99 << ...
字符串流具有毫不遜色的格式可能性,sprintf和您準備字符串,則:
ss.str()
沒有,ISN 「T。當然,你的剖析器已經發現這對你的應用來說是一個嚴重的瓶頸,不是嗎?更別提你應該首先使用'snprintf' ... –
絕對沒有辦法?甚至沒有任何back_inserter/ostream_iterator聰明的技巧? – GabiMe
@GabiMe任何'std :: back_inserter'實現我可以想象,需要做的幾乎與您在示例中顯示的一樣。所以從這些方面獲得更好表現的機會是有爭議的。 –