是否可以制作一个包装函数,我可以在其中传递 fprintf
的最后两个参数,例如 _Format
和 ...
以及它执行如下操作:
void Log::green(_Format, ...[args])
{
// Set to green
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
// Print
fprintf(stdout, _Format, args);
// Set back to default color
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
}
最佳答案
是的,但是你必须使用 vfprintf
printf
的版本并初始化 args
使用 va_start
/va_end
像这样:
void Log::green(const char * format, ...)
{
va_list args;
va_start (args, format);
// Set to green
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_GREEN | FOREGROUND_INTENSITY);
// Print
vfprintf(stdout, format, args);
// Set back to default color
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
va_end (args);
}
关于c++ - 'fprintf' 颜色格式包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019226/