当前位置: 首页 > 编程笔记 >

C / C ++中的mbrtoc32()及其示例

宰父疏珂
2023-03-14
本文向大家介绍C / C ++中的mbrtoc32()及其示例,包括了C / C ++中的mbrtoc32()及其示例的使用技巧和注意事项,需要的朋友参考一下

在本文中,我们将讨论C ++ STL中std::mbrtoc32()函数的工作,语法和示例。

什么是std::mbrtoc32()?

std::mbrtoc32()函数是C ++ STL中的内置函数,在<cuchar>头文件中定义。此函数用于将狭窄的多字节字符转换为UTF-32字符表示形式。

如果关联的字符指针不为null,并且所有其他参数也被接受,则它将转换相应的32位字符。

语法

size_t mbrtoc32( char32_t* pc32, char* str, size_t n, mbstate_t* ps);

参数

该函数接受以下参数-

  • pc32-这是指向我们要存储输出的位置的指针。

  • str-用作输入的字符串。

  • n-这是要检查的字节数。

  • ps-当我们解释多字节字符串时,它是指向状态对象的指针。

返回值

该函数的返回值根据以下条件而有所不同-

  • 0-当必须转换的str中的字符为NULL时,该函数将返回零。

  • 1…n-从字符串* str转换而来的多字节字符的字节数。

  • -3-如果存在代理对,则char32_t来自multi-char32_t。输入中无字节。

  • -2-当接下来的n个字节不完整但到目前为止是有效的多字节字符时,我们将得到-2。

  • -1-当我们遇到编码错误时,我们得到-1,没有任何内容写入* pc32。

示例

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
int main(void) {
   char32_t hold;
   char str[] = "I";
   mbstate_t arr{};
   int len;
   //初始化功能
   len = mbrtoc32(&hold, str, MB_CUR_MAX, &arr);
   if (len < 0) {
      perror("conversion failed");
      exit(-1);
   }
   cout << "String is: " << str << endl;
   cout << "Length is: " << len << endl;
   printf("32-bit character = 0g%02hd\n", hold);
}

输出结果

String is: I
Length is: 1
32-bit character = 0g73

示例

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
int main(void){
   char32_t hold;
   char str[] = "I";
   mbstate_t arr{};
   int len;
   //初始化功能
   len = mbrtoc32(&hold, str, MB_CUR_MAX, &arr);
   if (len < 0){
      perror("conversion failed");
      exit(-1);
   }
   cout << "String is: " << str << endl;
   cout << "Length is: " << len << endl;
   printf("32-bit character = 0x%08hx\n", hold);
}

输出结果

String is: I
Length is: 1
32-bit character = 0x0x000000490
 类似资料:
  • 本文向大家介绍C / C ++中的mbrtoc16()及其示例,包括了C / C ++中的mbrtoc16()及其示例的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论C ++ STL中std::mbrtoc16()函数的工作,语法和示例。 什么是std::mbrtoc16()? std::mbrtoc16()函数是C ++ STL中的内置函数,在<cuchar>头文件中定义。此函数用

  • 本文向大家介绍C / C ++中的iswgraph()及其示例,包括了C / C ++中的iswgraph()及其示例的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论C ++ STL中函数的工作,语法和示例。 iswgraph()是<cwctype>头文件下的函数。此功能用于检查给定的宽字符是否具有任何图形表示。该函数是函数isgraph的宽字符版本,位于<cctype>头文件下。

  • 主要内容:无符号数的输出在数学中,数字有正负之分。在C语言中也是一样,short、int、long 都可以带上正负号,例如: 如果不带正负号,默认就是正数。 符号也是数字的一部分,也要在内存中体现出来。符号只有正负两种情况,用1位(Bit)就足以表示; C语言规定,把内存的最高位作为符号位。以 int 为例,它占用 32 位的内存,0~30 位表示数值,31 位表示正负号。如下图所示: 在编程语言中,计数往往是从0开始,

  • 编写此代码是为了“查找给定字符是否为数字” 这被编译了,但是在接受输入后,它没有给出任何输出。但是,将倒数第二行中的 %c 更改为 %d 格式说明符时,它确实有效。我有点困惑,因为为什么%d工作,但%c没有,尽管变量是字符数据类型。

  • 本文向大家介绍在C#中global关键字的作用及其用法,包括了在C#中global关键字的作用及其用法的使用技巧和注意事项,需要的朋友参考一下 global 是 C# 2.0 中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它。 假设你现在写了一个类,名字叫 System。那么当你再在代码里写 System 的时候,编译器就不知道你是要指你写的 System 类还是系统的 System

  • 本文向大家介绍C及C++中typedef的简单使用介绍,包括了C及C++中typedef的简单使用介绍的使用技巧和注意事项,需要的朋友参考一下 typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。 在编程中