C 库 - towctrans() 函数

❮ C 标准库 - <wctype.h>


C wctype 库中的 towctrans() 函数用于根据指定的转换描述符对宽字符进行转换。

"转换描述符"是一个对象,它定义了具体的字符转换类型,例如将字符转换为大写或小写。"towctrans"等函数使用这些描述符对宽字符执行所需的转换。

语法

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

wint_t towctrans( wint_t wc, wctrans_t desc );

参数

此函数接受单个参数 -

  • wc - 待转换的宽字符类型为"wint_t"。

  • desc - wctrans_t 类型的描述符。该描述符通常使用 wctrans 函数获取。

返回值

如果 wc(宽字符)具有"desc"指定的属性,则此函数返回非零值,否则返回零。

示例 1

以下示例演示了如何使用 towctrans() 将宽字符转换为其大写等效项。

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

int main() {
    // 需要转换的宽字符
    wint_t wc = L'a';
    // 获取大写转换的转换描述符
    wctrans_t to_upper = wctrans("toupper");

   if (to_upper) {
      wint_t res= towctrans(wc, to_upper);
      if (res != WEOF) {
         wprintf(L"Transformed character: %lc", res);
      } else {
         wprintf(L"Transformation failed.");
      }
   } else {
       wprintf(L"Invalid transformation descriptor.");
   }

   return 0;
}

输出

以下是输出 -

Transformed character: A

示例 2

我们再来创建一个例子,我们使用 towctrans() 创建 desc(descriptor) 函数,将小写字母转换为大写字母,反之亦然。

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

int main() 
{ 
   wchar_t str[] = L"Tutorialspoint India"; 
   wprintf(L"Before transformation ");
   wprintf(L"%ls ", str);
   for (size_t i = 0; i < wcslen(str); i++) {
      // 检查是否为小写
      if (iswctype(str[i], wctype("lower"))) {
	     // 将字符转换为大写
		 str[i] = towctrans(str[i], wctrans("toupper"));
      }			
      // 检查是否为大写
      else if (iswctype(str[i], wctype("upper"))){
	    // 将字符转换为大写
		str[i] = towctrans(str[i], wctrans("tolower")); 
      }			
   } 
   wprintf(L"After transformation ");
   wprintf(L"%ls", str); 
   return 0; 
} 

输出

以下是输出 -

Before transformation 
Tutorialspoint India 
After transformation 
tUTORIALSPOINT iNDIA

示例 3

以下示例使用 towctrans() 创建 desc(descriptor),将大写字符转换为小写字符,反之亦然。

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

int main() 
{ 
   wchar_t str[] = L"Hello, Hyderabad visit Tutorialspoint 500081"; 
   wprintf(L"Original string: %ls ", str);

   for (size_t i = 0; i < wcslen(str); i++) {
      // 如果字符是小写,则将其转换为大写
      if (iswctype(str[i], wctype("lower"))) {
         str[i] = towctrans(str[i], wctrans("toupper"));
      }
      // 如果字符是大写,则将其转换为小写
      else if (iswctype(str[i], wctype("upper"))) {
         str[i] = towctrans(str[i], wctrans("tolower"));
      }
   }

   wprintf(L"Transformed string: %ls ", str);
   return 0; 
}

输出

以下是输出 -

Original string: Hello, Hyderabad visit Tutorialspoint 500081 
Transformed string: hELLO, hYDERABAD VISIT tUTORIALSPOINT 500081 

❮ C 标准库 - <wctype.h>