这是我当前的功能,它可以工作但不是类型安全的,有时会很烦人。
void Debug::Log(LogLevel level, const char* format, ...)
{
va_list args;
va_start(args, format);
cout << "[" << LogLevelToString(level) << "]\t";
vprintf(format, args);
va_end(args);
cout << endl;
}
如您所见,我希望传入的参数按照指定的格式进行格式化。我知道 std::cout 具有格式化功能,但我没有找到任何解释如何使用 C va_list 实现它的东西。
基本上要点是:我想保持相同的行为,但使用类型安全的更现代的方法,我需要 std::cout 以便我可以轻松地将输出重定向到文件或我需要的任何地方。
有用的点:从格式中我可以确定传入了多少个参数,有没有办法循环遍历 va_list 参数,以便我可以将它们单独传递给 cout ?
谢谢