2
函数fprintf
写入FILE*
。我有一个debugPrint函数写入到stringstream。我不想改变我的功能,因为它在很多地方使用,它会破坏代码。使fprintf写入std :: stringstream
如何将一个stringstream传递给fprintf?
更新:我是否可以将stringstream
换成FILE
并解开回来?
函数fprintf
写入FILE*
。我有一个debugPrint函数写入到stringstream。我不想改变我的功能,因为它在很多地方使用,它会破坏代码。使fprintf写入std :: stringstream
如何将一个stringstream传递给fprintf?
更新:我是否可以将stringstream
换成FILE
并解开回来?
您不能将ostream“传递”到fprintf。 FILE
结构依赖于平台。
这可能不是最好的办法,但却可以创造一个邪恶的宏:
#undef fprintf
#define fprintf my_fprintf
而且你可以创建两个my_fprintfs,一种采用FILE*
,另一个需要std::stringstream&
作为参数。
您可以通过直接调用my_fprintf来避免宏,但必须修改调用站点。
你不能“轻易地在文件*中包装stringstream”,但是有一些系统特定的方法。如果这就是你之后的话,那么Linux例如有fopencookie(),它使用函数指针来读/写函数。然后你可以创建包装std :: stringstream的函数。
在这个答案的结尾http://stackoverflow.com/a/19749019/225186我写了关于'istringstream'的情况,我猜可以做类似的'ostringstream' – alfC