Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-变分函数与cout_C++_Logging_Io - Fatal编程技术网

C++ C++;-变分函数与cout

C++ C++;-变分函数与cout,c++,logging,io,C++,Logging,Io,我有一个记录函数,它接受可变参数。这对于android日志记录和printf来说很好,但是我想对std::cout和文件流也这样做。有没有简单的方法解决这个问题 void LogManagerImpl::LogInfo(const char* msg, ...) { va_list argptr; va_start(argptr, msg); /* Log to stdout */ if (mLogToStdOut)

我有一个记录函数,它接受可变参数。这对于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,比如<代码> VPRTFF /<代码> VNSpRNTFF < /C>。以这种方式包装流只会丢掉所有好处并导致额外的复杂性


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

但我也面临着同样的问题,但情况正好相反;如何在引擎盖中使用stdio函数来使用流库?使用区域设置替换的IOstreams的简单版本并不是什么大问题。