我需要一个返回格式化字符串最终长度的 C 函数,这样我就可以正确分配目标字符串,而不是自己计算长度。有 snprintf
可以在无法写入整个字符串时执行此操作,但不幸的是,它没有宽字符替代方案。
swprintf
在错误的情况下返回 -1,而不是所需的长度(为什么不一样的行为?!?)
提到的标题 asprintf
似乎也没有帮助,因为它只提供了一个非宽版本。
_vscwprintf
可以在 windows 上使用,但我需要一个跨平台的标准版本,或者至少是一个 Linux 版本,我将#ifdef 代码。
有什么想法吗?谢谢!
最佳答案
POSIX 2008 添加了 open_wmemstream
函数,与 vfwprintf
一起,完全满足您的需要。它以前是一个 GNU 扩展,因此在 GNU 系统上使用了很长时间。
这可以很容易地用于构造一个 awprintf
包装器。
关于c - asprintf 有 wchar_t 版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809410/