【发布时间】:2013-11-25 20:02:40
【问题描述】:
我编写了一个自定义打印函数。我的问题是我需要返回一个const char*,因为它必须在另一个函数中使用。我根本不知道如何管理...
anotherFunction (const char* text /*Here*/, unsigned __int32 value, unsigned __int64 bigVal);
我知道以下示例无法正常工作。这就是我到目前为止所尝试的。
const char* CatchMessage (const char *message, ...)
{
va_list args;
va_start (args, message);
/*?*/
va_end (args);
return message;
}
我还只是设法在 cmd 中获得正确的输出,但我实际上需要它作为返回值。
void CatchMessage (const char *message, ...)
{
va_list args;
va_start (args, message);
vfprintf (stdout, message, args);
va_end (args);
}
呼叫:
CatchMessage ("Some Input %s and %d equals to %d", randString, randNumber, secRandNumber);
应该返回:
"Some Input stuff and 12 equals to 6"
我无法找到解决方案。任何帮助将不胜感激。
问:如何让这个CatchMessage 函数返回格式正确的const char*?
【问题讨论】:
-
我建议检查您的系统是否有
vasprintf()或vs[n]printf()(后者可以调用两次——一次使用NULL 缓冲区来获取输出长度,然后再次在缓冲区上调用malloc/new)... 您的客户端代码需要负责释放内存。但是,有什么意义呢?你考虑过boost::format和std::string吗?
标签: c++ c printf variadic-functions