gpt4 book ai didi

C++ - 可变参数函数和 cout

转载 作者:太空狗 更新时间:2023-10-29 21:49:00 37 4
gpt4 key购买 nike

我有一个接受可变参数的日志记录功能。这适用于 android 日志记录和 printf,但我想对 std::cout 和文件流做同样的事情。有没有简单的方法解决这个问题?

void LogManagerImpl::LogInfo(const char* msg, ...)
{
va_list argptr;
va_start(argptr, msg);

/* Log to stdout */
if (mLogToStdOut)
{
#ifdef ANDROID
__android_log_vprint(ANDROID_LOG_INFO, __ENGINE_LOG_TAG, msg, argptr);
#elif defined _WIN32 || _WIN64
//printf ("%s:%s",__ENGINE_LOG_TAG,"INFO:"); vprintf(msg, argptr); printf("\n");
// how do I do the same as above except with for example std::cout?
#endif
}

/* Log to file */
if (mLogToFile)
{
// TODO

}

va_end(argptr);
}

最佳答案

不要尝试对 C++ 流使用可变参数包装器,只需使用相应的 C API,例如 vprintf/vnsprintf。以这种方式包装流只会丢掉所有好处并导致额外的复杂性。

为什么不让您的包装器 API 使用流,并将它们映射到 Android 平台上的 printf。这样您就可以获得流的所有好处,并且只会在本身不支持它们的平台上失去它们。

关于C++ - 可变参数函数和 cout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435933/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com