Namespaces
Variants

wmemchr

From cppreference.net
< c ‎ | string ‎ | wide
定义于头文件 <wchar.h>
wchar_t * wmemchr ( const wchar_t * ptr, wchar_t ch, size_t count ) ;
(1) (C95 起)
/*QWchar_t*/ * wmemchr ( /*Qwchar_t*/ * ptr, wchar_t ch, size_t count ) ;
(2) (C23 起)
1) 在由 ptr 所指向的宽字符数组或兼容类型的整数数组中,定位宽字符 ch 在前 count 个宽字符中的首次出现位置。
2) (1) 等效的类型泛型函数。设 T 为无修饰的宽字符对象类型。
  • ptr 的类型为 const T * ,则返回类型为 const wchar_t *
  • 否则,若 ptr 的类型为 T * ,则返回类型为 wchar_t *
  • 否则行为未定义。
若为访问实际函数而抑制了这些泛型函数的宏定义(例如使用 ( wmemchr ) 或函数指针时),则实际函数声明 (1) 将变为可见。

如果 count 为零,该函数返回空指针。

目录

参数

ptr - 指向待检测宽字符数组的指针
ch - 要搜索的宽字符
count - 待检测的宽字符数量

返回值

指向该宽字符位置的指针,若未找到此字符则为空指针。

示例

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
    wchar_t str[] = L"诺不轻信,故人不负我\0诺不轻许,故我不负人。";
    size_t sz = sizeof str / sizeof *str;
    wchar_t target = L'许';
    wchar_t* result = wmemchr(str, target, sz);
    if (result)
    {
        setlocale(LC_ALL, "en_US.utf8");
        printf("Found '%lc' at position %td\n",target, result - str);
    }
}

可能的输出:

Found '许' at position 14

参考文献

  • C23 标准 (ISO/IEC 9899:2024):
  • 7.29.4.5.8 wmemchr 函数 (页: TBD)
  • C17 标准 (ISO/IEC 9899:2018):
  • 7.29.4.5.8 wmemchr 函数 (p: TBD)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.29.4.5.8 wmemchr 函数 (p: 438)
  • C99标准(ISO/IEC 9899:1999):
  • 7.24.4.5.8 wmemchr函数(页码:384)

参阅

在数组中搜索字符的首次出现
(函数)
(C95)
在宽字符串中查找宽字符的首次出现
(函数)