c ++:sprintf直接到ostream

时间:2014-02-23 12:30:33

标签: c++

有没有办法让sprintf将结果直接写入给定的ostream?

我需要这个,因为我的代码每秒都会向sprintf进行数千次调用,其中缓冲区被复制到ostream中:

while(..)
{
   ..
   char buf[64];
   sprintf(buf, ..)
   oss << buf;
}

2 个答案:

答案 0 :(得分:2)

我不知道有任何办法,但你肯定不需要它。

ostream 专门用于避免类似printf的格式,所以我相信任何printf / sprintf格式输出都可以重新设计,直接在ostream上运行。只需使用<< overloaded operato r进行格式化。

答案 1 :(得分:2)

不,C函数与stl容器没有共同之处。

为什么不彻底消除sprintf并将所有输出直接放到stringstream:

ss << " some string " << 99 << ...

stringstream具有sprintf的格式化可能性,然后你就可以准备好字符串:

ss.str()