WSUnicodeContainer (C 函数)
是一个为储存 UCS-2、UTF-8、UTF-16 或 UTF-32 编码的字符串和它们的长度的 WSTP 类型,可方便在 WSTP 模板程序中的函数间传递 Unicode 字符串.
更多信息
- 使用可提供便捷的宏 WSUnicodeStringLength(container) 来访问用于储存 Unicode 字符串的代码单元的数量. 代码单元的类型根据包括在容器内的 Unicode 字符串的类型不同而改变.
- 使用可提供便捷的宏 WSUCS2String(container),WSUTF8String(container),WSUTF16String(container) 和 WSUTF32String(container) 来获取容器内字符串的第一个代码单元的指针.
- 使用可提供便捷的宏 WSUnicodeStringType(container) 来访问容器内字符串的 WSUnicodeContainerType 值.
- 这些可提供便捷的宏在 WSUnicodeContainer 的指针上运行.
- 多数情况下,程序员不需要访问 WSUnicodeContainer 对象的内容,而是可以在使用以下 mprep 返回类型之一时将其作为一个返回值传递给某 WSTP 模板函数:UCS2String, UCS2Symbol, UTF8String, UTF8Symbol, UTF16String, UTF16Symbol, UTF32String, 和 UTF32Symbol.
- 使用 WSTP API 函数 WSNewUnicodeContainer() 来分配一个新的容器对象. 可用 WSReleaseUnicodeContainer() 来释放该对象使用的内存.
- 多数情况下,程序员不需要直接调用 WSReleaseUnicodeContainer() 来释放一个 WSUnicodeContainer 对象,而是可以使用 mprep,它会生成可自动释放一个 WSUnicodeContainer 对象的代码.
- WSTP 的标头文件 wstp.h 已对 WSUnicodeContainer 作出声明.
范例
基本范例 (1)
#include "wstp.h"
/* A simple function for sending a Unicode string using a WSUnicodeContainer object */
void f(WSUnicodeContainer *container, WSLINK link)
{
if(container == (WSUnicodeContainer *)0)
return;
switch(WSUnicodeStringType(container))
{
case UCS2ContainerType:
if(! WSPutUCS2String(link, WSUCS2String(container),
WSUnicodeStringLength(container)))
{ /* Unable to send the UCS-2 encoded string */ }
break;
case UTF8ContainerType:
if(! WSPutUTF8String(link, WSUTF8String(container),
WSUnicodeStringLength(container)))
{ /* Unable to send the UTF-8 encoded string */ }
break;
case UTF16ContainerType:
if(! WSPutUTF16String(link, WSUTF16String(container),
WSUnicodeStringLength(container)))
{ /* Unable to send the UTF-16 encoded string */ }
break;
case UTF32ContainerType:
if(! WSPutUTF32String(link, WSUTF32String(container),
WSUnicodeStringLength(container)))
{ /* Unable to send the UTF-32 encoded string */ }
break;
}
WSReleaseUnicodeContainer(container);
}