📜  C C++中的wmemchr()函数(1)

📅  最后修改于: 2023-12-03 14:39:37.497000             🧑  作者: Mango

#wmemchr()函数概述 wmemchr()函数是C语言和C++语言中用来查找宽字符(wchar_t类型)的函数。它的功能类似于C语言中的strchr()和C++中的std::find(),但是它能够搜索宽字符(wchar_t类型)串中的字符。它的返回值是一个指向被查找到宽字符位置的指针。wmemchr()函数属于<string.h>和头文件中的函数。

##语法格式 wmemchr(const wchar_t * ws, wchar_t c,size_t n)

##参数说明 ws:需要进行查找的宽字符字符串。

c:在宽字符字符串中需要查找的字符。

n:宽字符字符串ws的长度,也就是需要查找的字节数。

##返回值说明 wmemchr()函数会在ws中查找前n个宽字符中第一个与c相等的字符,如果找到了相等的字符,则返回指向该字符的指针;如果没找到,返回NULL。

##示例代码

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, "en_US.UTF-8");

    wchar_t str1[] = L"abcde";
    wchar_t str2[] = L"efghijklmn";

    wchar_t *result = wmemchr(str1, L'b', wcslen(str1) * sizeof(wchar_t));
    if (result != NULL) {
        printf("wmemchr('" L"%ls" L"', '" L"%lc" L"') found character " L"%lc" L" at position %ld\n", str1, L'b', *result, result - str1 + 1);
    } else {
        printf("wmemchr('" L"%ls" L"', '" L"%lc" L"') didn't find the character\n", str1, L'b');
    }

    result = wmemchr(str2, L'm', wcslen(str2) * sizeof(wchar_t));
    if (result != NULL) {
        printf("wmemchr('" L"%ls" L"', '" L"%lc" L"') found character " L"%lc" L" at position %ld\n", str2, L'm', *result, result - str2 + 1);
    } else {
        printf("wmemchr('" L"%ls" L"', '" L"%lc" L"') didn't find the character\n", str2, L'm');
    }

    return 0;
}

##执行结果

wmemchr('abcde', 'b') found character b at position 2
wmemchr('efghijklmn', 'm') found character m at position 11

##代码说明 以上示例代码中,setlocale()函数是为了打印宽字符时支持Unicode。首先定义了两个宽字符串str1和str2。然后调用wmemchr()函数查找字符‘b’和字符‘m’,分别在str1和str2中进行查找。执行输出结果可以看出,wmemchr()函数正确地找到了指定字符,并返回了该字符的首地址。