C/C中的mbsrtowcs()函数++

这个 mbsrtowcs( )函数将窄多字节字符序列转换为宽字符序列。它转换多字节字符串,其第一个字节由 *src 对应的宽字符表示,并存储在 目的地 .最多 伦恩 宽字符被写入 目的地 .

null

语法:

size_t mbsrtowcs( wchar_t* dest, const char** src, size_t len, mbstate_t* ps )

参数: 该函数接受四个强制参数,如下所述:

  • 目的地: 指定指向存储转换后的宽字符的数组的指针
  • 附言: 指定指向转换状态对象的指针
  • src: 指定指向要转换的第一个多字节字符的指针
  • 伦恩: 指定要存储的最大数字宽度字符

返回值: 该函数返回两个值,如下所示:

  • 函数的作用是:返回写入dest的宽字符数,成功后不包括终止的宽空字符。
  • 如果dest是一个空指针,它将返回考虑到长度不受限制而写入的宽字符数。
  • 转换错误时,返回-1,并将errno设置为 艾尔斯克

    .

注: 此函数用于将src指针移动到转换后的多字节字符串的末尾。如果 dst==NULL

以下程序说明了上述功能: 项目1:

// C++ program to illustrate
// mbsrtowcs function
#include <bits/stdc++.h>
using namespace std;
int main()
{
setlocale (LC_ALL, "en_US.utf8" );
// initializing the string
// narrow multibyte character sequence
const char * src = "u0763u0757" ;
wchar_t dest[20];
// initial state
mbstate_t ps = mbstate_t ();
// maximum number of wide character
int max = 10;
int retVal = mbsrtowcs ( dest, &src, max, &ps );
wcout << L "Number of wide characters written = "
<< retVal << endl;
wcout << L "Wide character = " << dest << endl;
return 0;
}


输出:

Number of wide characters written = 2
Wide character = Ý£Ý?

项目2:

// C++ program to illustrate
// mbsrtowcs function
#include <bits/stdc++.h>
using namespace std;
int main()
{
// set locale
setlocale (LC_ALL, "en_US.utf8" );
// initializing the string
// narrow multibyte character sequence
const char * src = u8 "zu00dfu6c34U0001f34c" ;
wchar_t dest[20];
// initial state
mbstate_t ps = mbstate_t ();
// maximum number of wide character
int max = 10;
int retVal = mbsrtowcs ( dest, &src, max, &ps );
wcout << L "Number of wide characters written  = "
<< retVal << endl;
wcout << L "Wide character = " << dest << endl;
return 0;
}


输出:

Number of wide characters written  = 4
Wide character = zÃ?æ°´ð??

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享