【问题标题】:get length of `wchar_t*` in c++在 C++ 中获取 `wchar_t*` 的长度
【发布时间】: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*指向的内存块的长度。

标签: c++ string 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 样式字符串的长度,您有两种选择:

  1. #include <cwchar> 并使用 std::wcslen (dimObjPrefix);
  2. #include <string>并使用std::char_traits<wchar_t>::length (dimObjPrefix);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多