c - asprintf 有 wchar_t 版本吗?

标签 c wchar-t printf

我需要一个返回格式化字符串最终长度的 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/

相关文章:

golang printf float 没有前导零

c - printf 不工作和其他问题

将 int 转换为 char[]

c - Linux cc 项目内目录中的库编译?

c - 无法解析符号 O_DIRECT

c - C 中有类似 "Beginning of file"的东西吗?

c++ - .c_str() 怪异?数据变化无缘无故?

c - 如何将AVX2 vector 水平3乘3添加?

ios - setlocale() 在 iOS 模拟器中不起作用?

无法读取并回显 C 中的 unicode 输入