函数fprintf
写入FILE*
. 我有一个写入字符串流的 debugPrint 函数。我不想更改我的功能,因为它在很多地方都使用过,而且会破坏代码。
如何将字符串流传递给 fprintf?
更新:我可以包装stringstream
到 aFILE
并解开吗?
函数fprintf
写入FILE*
. 我有一个写入字符串流的 debugPrint 函数。我不想更改我的功能,因为它在很多地方都使用过,而且会破坏代码。
如何将字符串流传递给 fprintf?
更新:我可以包装stringstream
到 aFILE
并解开吗?
您不能将 ostream“传递”给 fprintf。该FILE
结构取决于平台。
这可能不是最好的方法,但是您可以创建一个邪恶的宏:
#undef fprintf
#define fprintf my_fprintf
您可以创建两个 my_fprintfs,一个接受FILE*
,另一个接受std::stringstream&
作为参数。
您可以通过简单地直接调用 my_fprintf 来避免宏,但您必须修改调用站点。
您不能可移植地“将字符串流包装在 FILE* 中”,但有一些系统特定的方法。如果这就是您所追求的,那么例如 Linux 就有 fopencookie() ,它采用函数指针来读取/写入函数。然后您可以创建包装 std::stringstream 的函数。