【发布时间】:2016-02-18 12:49:22
【问题描述】:
作为学习经验,我正在将一些东西从 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函数(如果它在您的系统上可用)。