作为一次学习经验,我正在将一些东西从Windows移植到MacOS,并遇到了类似于这样的问题:
void SomeClass::someFunction(const char* format, va_list args)
{
int size = _vscprintf(format, args); // length after formatting
std::string s;
s.resize(size);
vsprintf(&s[0]);
...
}
现在,由于_vscprintf是Microsoft特有的,在Linux上我没有找到类似的东西,所以我想在这里问一下。
同时,让我们假设这段代码处于某个关键路径中,不应该有额外的堆分配或类似的开销。
在MacOS/Linux上,推荐使用什么替代_vscprintf呢?
谢谢!
_vscprintf
函数的方法;但是如果您将其与vsprintf
一起使用(如在someFunction
示例中),则可以改用asprintf
函数(如果该函数在您的系统上可用)。 - oliver