【问题标题】:wcstombs_s(), length of converted stringwcstombs_s(),转换后的字符串长度
【发布时间】:2020-09-20 07:35:58
【问题描述】:
errno_t wcstombs_s(
   size_t *pReturnValue,
   char *mbstr,
   size_t sizeInBytes,
   const wchar_t *wcstr,
   size_t count
);

Microsoft VS2019's documentation 说:

pReturnValue
转换后字符串的字节大小,包括空终止符。

...

如果wcstombs_s 成功转换了源字符串,它会将转换后的字符串的字节大小(包括空终止符)放入*pReturnValue(前提是pReturnValue 不为空)。

cppreference.com's documentation 说:

retval - 指向将存储结果的 size_t 对象的指针

...

成功时返回零(在这种情况下,不包括以零结尾的已写入或将要写入dst 的字节数存储在*retval 中)

谁错了?

【问题讨论】:

  • 可能他们两个。 Microsoft 仍将在 C++ 标准中使用他们的 _s 函数,这些函数在 _s 函数之前。

标签: c++ c visual-c++


【解决方案1】:

两者都没有。 cppreference 指的是函数的标准兼容版本。 Microsoft 文档指的是在其标准库中实现的版本。

如果您使用的是 MS Visual C++,请使用 Microsoft 文档。否则,请使用 cppreference 文档。

【讨论】:

  • 微软以不遵守标准而闻名。
  • 微软通过让标准语言指定一些与这些接口的唯一现有实现相反的东西来破坏这个特定的(幸好是可选的)标准附件 K 的过程。幸运的是,它们没用,没有其他人有兴趣实现它们。忽略所有_s 函数,假装它们不存在。它们不能解决任何实际问题。
猜你喜欢
  • 2013-08-23
  • 2012-07-22
  • 1970-01-01
  • 2016-08-17
  • 2014-08-15
  • 2014-06-15
  • 1970-01-01
  • 2022-11-23
相关资源
最近更新 更多