2013-04-18 107 views
2

函数fprintf写入FILE*。我有一个debugPrint函数写入到stringstream。我不想改变我的功能,因为它在很多地方使用,它会破坏代码。使fprintf写入std :: stringstream

如何将一个stringstream传递给fprintf?

更新:我是否可以将stringstream换成FILE并解开回来?

+0

在这个答案的结尾http://stackoverflow.com/a/19749019/225186我写了关于'istringstream'的情况,我猜可以做类似的'ostringstream' – alfC

回答

0

您不能将ostream“传递”到fprintf。 FILE结构依赖于平台。

这可能不是最好的办法,但却可以创造一个邪恶的宏:

#undef fprintf 
#define fprintf my_fprintf 

而且你可以创建两个my_fprintfs,一种采用FILE*,另一个需要std::stringstream&作为参数。

您可以通过直接调用my_fprintf来避免宏,但必须修改调用站点。

你不能“轻易地在文件*中包装stringstream”,但是有一些系统特定的方法。如果这就是你之后的话,那么Linux例如有fopencookie(),它使用函数指针来读/写函数。然后你可以创建包装std :: stringstream的函数。