在 C++ 中获取 `wchar_t*` 的长度

Posted

技术标签:

【中文标题】在 C++ 中获取 `wchar_t*` 的长度【英文标题】:get length of `wchar_t*` in c++ 【发布时间】:2011-02-20 16:04:04 【问题描述】:

请问,如何在 c++ 中找出 wchar_t* 类型变量的长度?

下面的代码示例:

wchar_t* dimObjPrefix = L"retro_";

我想知道dimObjPrefix 包含多少个字符

【问题讨论】:

你是指单个字符还是字符串? 对不起,我应该说得更清楚。我想要字符数。 wcslen 似乎按照msdn.microsoft.com/en-us/library/78zh94ax(VS.71).aspxThanks tusbar 做我想做的事。 @Jacob:wchar_t 不是字符串,也没有长度。我假设你在问wchar_t*。你知道,这些星号不仅仅是为了展示。如果不改变代码(和问题)的含义,就不能忽略它们 @jalf 谢谢和抱歉。我已编辑问题以包含我试图查找的代码示例,其中包括星号。 所以你想要wchar_t*指向的内存块的长度。 【参考方案1】:

如果你想知道 wchar_t 字符串的大小 (wchar_t *),你想使用wcslen(3)

size_t wcslen (const wchar_t *ws);

【讨论】:

也许是 sizeof (wchar_t),或者 wchar_t x 后跟 sizeof x? @Joseph,我花了很长时间才明白你的意思,我编辑了。谢谢你。很抱歉造成混乱。 关于 sizeof(),K&R 和 ANSI 基本原理都没有给出任何理由来解释括号的这种特殊性;有没有 SO 读者碰巧知道? sizeof(type)sizeof expression。现在如果e 是一个表达式,那么(e) 也是一个表达式,所以sizeof (expression) 也是隐式允许的。 使用wcslen安全吗?【参考方案2】:

假设您想获取以空结尾的 C 样式字符串的长度,您有两种选择:

    #include <cwchar> 并使用 std::wcslen (dimObjPrefix);, 或#include <string>并使用std::char_traits<wchar_t>::length (dimObjPrefix);

【讨论】:

以上是关于在 C++ 中获取 `wchar_t*` 的长度的主要内容,如果未能解决你的问题,请参考以下文章

C++如何把string类型的字符串负值给wchar_t?求完整实例。

PSTRLPSTR等宏原型

在 C# 中元帅 C++ wchar_t**

重新声明 C++ 内置类型'wchar_t' windows 10 glut cpp

C++中char和wchar_t转换

C++ 中的 LPWSTR、wchar_t* 和无符号短指针