【问题标题】:C++11 char16_t strstr and sprintf equivalentC++11 char16_t strstr 和 sprintf 等效
【发布时间】:2013-05-18 08:40:15
【问题描述】:

char16_t 类型是否有与 strstr 和 sprintf 等效的函数?

另外,char16_t 的其余函数在哪里可以找到?

【问题讨论】:

标签: c++ c++11 char16-t


【解决方案1】:

我不认为有这样的功能。

如果sizeof(char16_t) == sizeof(wchar_t),您可以使用wsprintf等宽字符串函数

警告:sizeof(wchar_t) == sizeof(int32_t) 在 Linux 上!

而且您始终可以使用(在 C++11 中)std::u16string

也许您可以考虑使用 Qt5 QChar(几乎就像 UTF16 中的 char16_t)和 QString。您只需为此链接QtCore。那么QString::arg 类似于(但不等同于)sprintf 可以提供的功能。

正如我所评论的,浮点到字符串的转换很棘手。也许MUSL libc 的一些代码(免费软件,MIT 许可)可以启发你,你可能会借用其中的一些。

【讨论】:

  • 感谢您的回答。看来我可以用 std::u16string 实现 strstr。如何为 char16_t 实现 sprintf?
  • 但由于某些限制,我无法将 QtCore 链接到我的项目。
  • 那么你必须重新实现你的sprintflike函数。
  • 我就是这么做的。但是由于一些限制,我不支持 %f 和 %e 格式,因为我需要浮点或双精度到字符串的转换。你能给我很好的链接来准确地做到这一点吗?
  • 不,我不能提供链接;做对是棘手且困难的。也许MUSL libc 的一些代码可以帮助你(MIT 许可的免费软件)。
猜你喜欢
  • 2011-08-14
  • 2022-07-19
  • 2013-10-04
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 2015-03-24
相关资源
最近更新 更多