C 库 - wctrans() 函数

❮ C 标准库 - <wctype.h>


C wctrans 库中的 wctrans() 函数用于获取 wctrans_t 类型的 desc(描述符)。此描述符可与"iswctype"函数一起使用,以检查给定的宽字符是否属于特定的字符类。

此函数可以保存以下"str"值 -

  • toupper - 标识 towupper 使用的映射
  • tolower - 标识 towlower 使用的映射

语法

以下是 wctrans() 函数的 C 库语法 -

wctrans_t wctrans( const char* str )

参数

此函数接受单个参数 -

  • str − 这是一个指向"const char*"类型字符串的指针,该字符串指定要获取描述符的字符类的名称。

返回值

此函数返回一个 wctrans_t 类型的对象,该对象可与 towctrans() 函数一起使用来映射宽字符。

示例 1

以下是一个基本的 C 程序,用于演示如何使用 wctrans() 获取描述符。

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

int main() {
   // 需要检查的宽字符
   wchar_t wc = L'A';
    
   // 小写字符描述符
   wctrans_t desc = wctrans("tolower");

   wprintf(L"Original character: %lc", wc);

   if (iswctype(wc, wctype("upper"))) {
      wc = towctrans(wc, desc);
      wprintf(L"Lowercase: %lc", wc);
   } else {
      wprintf(L"Not an uppercase character.");
   }
   return 0;
}

输出

以下是输出 -

Original character: A
Lowercase: a

示例 2

我们再创建一个例子,使用 wctrans() 函数获取转换描述符,然后使用"towctrans"将小写字符转换为大写字符,反之亦然。

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

int main() {
   wchar_t string[] = L"tUTORIALSPOINT.COM";
   wprintf(L"Original string: %ls ", string);

   wctype_t lower= wctype("lower");
   wctype_t upper = wctype("upper");

   for (int i = 0; i < wcslen(string); i++) {
      // 如果字符位于下部,则转换为上部
      if (iswctype(string[i], lower))
         string[i] = towctrans(string[i], wctrans("toupper"));
          
      // 如果字符位于上部,则转换为下部
      else if (iswctype(string[i], upper))
         string[i] = towctrans(string[i], wctrans("tolower"));
   }

   wprintf(L"After transformation: %ls", string);
   return 0;
}

输出

以下是输出 -

Original string: tUTORIALSPOINT.COM 
After transformation: Tutorialspoint.com

示例 3

以下示例为"toupper"创建了一个 desc(描述符)。然后我们在 wctrans() 中使用此 desc 将其转换为大写。

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

int main() {
    // 待检查的宽字符串
    wchar_t str[] = L"tutorialspoint";
    
    // 大写字符描述符
    wctrans_t desc = wctrans("toupper");
    
    // 循环遍历字符串中的每个字符
    for (size_t i = 0; str[i] != L'\0'; ++i) {
      // 检查字符是否为字母数字
      if (iswctype(str[i], wctype("lower"))) {
         str[i] = towctrans(str[i], desc);
         wprintf(L"%lc ", str[i]);
      } else {
         wprintf(L"Not converted to uppercase");
      }
   }
   return 0;
}

输出

以下是输出 -

T U T O R I A L S P O I N T 

❮ C 标准库 - <wctype.h>