C / C++中的mbsrtowcs( )函数将一个窄的多字节字符序列转换为一个宽的字符序列。其转换的多字符字符串,其第一个字节是由*所表示的src对应宽字符表示,并且被存储在宽字符阵列中dest指向到。最多可将len个宽字符写入dest 。
句法 :
size_t mbsrtowcs( wchar_t* dest, const char** src, size_t len, mbstate_t* ps )
参数:该函数接受四个强制性参数,如下所述:
- dest:指定指向存储转换后的宽字符的数组的指针
- ps:指定指向转换状态对象的指针
- src:指定指向第一个要转换的多字节字符的指针
- len:指定要存储的最大宽度字符
返回值:函数返回两个值,如下所示:
- mbsrtowcs()函数返回成功写入dest的宽字符数,但不包括终止的空null字符。
- 如果dest是空指针,则返回考虑到无限长度的宽字符数。
- 发生转换错误时,返回-1并将errno设置为EILSEQ
。
注意:此函数将src指针移至转换后的多字节字符串。如果dst == NULL则不会发生
下面的程序说明了上述函数:
程序1:
// C++ program to illustrate
// mbsrtowcs function
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "en_US.utf8");
// initializing the string
// narrow multibyte character sequence
const char* src = "\u0763\u0757";
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
using namespace std;
int main()
{
// set locale
setlocale(LC_ALL, "en_US.utf8");
// initializing the string
// narrow multibyte character sequence
const char* src = u8"z\u00df\u6c34\U0001f34c";
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Ã?æ°´ð??
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。