我在一个类的构造函数中有这个代码(不是我写的),它将一个变量 arg 列表写入一个 tmp 文件。
我想知道为什么需要这个?在此 ctor 超出范围并且 var arg 列表位于 m_str 向量内后,将删除 tmpfile。
有人可以在不使用 tmpfile 的情况下提出更好的方法吗?
DString(const char *fmt, ...)
{
DLog::Instance()->Log("Inside DString with ellipses");
va_list varptr;
va_start(varptr, fmt);
FILE *f = tmpfile();
if (f != NULL)
{
int n = ::vfprintf(f, fmt, varptr) + 1;
m_str.resize(n + 1);
::vsprintf(&m_str[0], fmt, varptr);
va_end(varptr);
}
else
DLog::Instance()->Log("[ERROR TMPFILE:] Unable to create TmpFile for request!");
}