C# 有一个不错的静态方法
String.Format(string, params string[]);
返回具有所提供格式和值的新字符串。C ++中有等价物吗?
原因是因为我正在使用 log4cxx 并希望利用宏,例如
LOG4CXX_DEBUG( logger, expr );
它使用短路评估,因此如果未启用日志级别 DEBUG,则永远不会评估 expr。
目前,在 C++ 中,我这样做:
CString msg;
msg.Format( formatString, values... );
LOG4CXX_INFO( _logger, msg );
这违背了目的,因为我必须首先分配和格式化字符串,所以短路逻辑几乎没有效率。
尝试使用数值进行简单日志记录时也存在类似问题。这不会编译:
LOG4CXX_DEBUG( _logger, "the price is " + _some-double_);
所以我最终不得不写这样的东西:
CString asStr;
asStr.Format( "%d", _some-double_ );
LOG4CXX_DEBUG( _logger, "the price is " + asStr );
这再次违背了目的。
我根本不是 C++ 专家,所以我希望更多知识渊博的人可以提供帮助。