📜  C++中的wctob()函数

📅  最后修改于: 2021-05-30 14:37:39             🧑  作者: Mango

如果在初始移位状态下等效的多字节字符为单个字节,则C++中的wctob()函数有助于将宽字符wc转换为单个字节。因为,该函数使用单字节编码,因此被用于从ASCII字符集的字符。

句法:

int wctob (wint_t wc);

参数:上面的函数接受单个参数,如下所述:

  • wc:这是wctob()函数接受的唯一参数,它是需要缩小/转换的宽字符。

    返回类型:如果函数对应于初始状态下具有单字节长度的多字节字符,则该函数返回宽字符wc的单字节表示形式。否则,它将返回EOF(文件末尾)。

    下面的程序说明了上述函数:

    程序1:

    // Program illustrating
    // wctob() function
    #include 
      
    // function implementing the wctob() function
    int fun()
    {
      
        int i, num;
        const wchar_t wc[] = L"priya lal";
      
        num = 0;
        for (i = 0; i < wcslen(wc); ++i)
            if (wctob(wc[i]) != EOF)
                ++num;
      
        // prints the numbers of characters
        // needed to be translated
        wprintf(L"wc has %d characters to be translated"
                "to single-byte characters.",
                num);
    }
      
    // Driver Program
    int main()
    {
        fun();
        return 0;
    }
    
    输出:
    wc has 9 characters to be translatedto single-byte characters.
    

    程序2:

    // C++ program illustrating the wctob() function
    #include 
      
    // function implementing the wctob() function
    void fun(wchar_t wc)
    {
      
        int cn = wctob(wc);
        if (cn != EOF)
      
            printf("%#x translated to %#x\n", wc, cn);
      
        else
      
            printf("%#x could not be translated\n", wc);
    }
      
    // Driver Program
    int main(void)
    {
        char* utf_locale_present
            = setlocale(LC_ALL, "th_TH.utf8");
      
        // prints the result of the function
        puts("In Thai UTF-8 locale:");
        fun(L'a');
        fun(L'?');
    }
    
    输出:
    In Thai UTF-8 locale:
    0x61 translated to 0x61
    0x3f translated to 0x3f
    
    要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”