WSGetByteString (C 函数)
int WSGetByteString(WSLINK link,const unsigned char **s,int *n,long spec)
从由 link 指定的 WSTP 连接中获取一个字符字符串,并把字符代码存储在 s,字符数存储在 n. 代码 spec 被用于 Wolfram 语言的字符代码大于255的任意字符.
更多信息
- WSGetByteString() 为字符代码数组分配内存. 必须调用 WSReleaseByteString() 释放该内存. 如果 WSGetByteString() 失败并且函数的返回值表明一个错误,不要调用含有 s 中的值的 WSReleaseByteString().
- WSGetByteString() 在没有出现特殊字符的情况下很方便.
- 由 WSGetByteString() 使用的字符代码与由 Wolfram 语言中 ToCharacterCode 返回的完全一样.
- WSGetByteString() 中的字符代码数组不是由零字符终止.
- 字符例如,换行符是由其原始字符代码指定,而不是 ASCII 的形式例如 ∖n.
- WSGetByteString() 返回不可变的数据.
- 若发生错误,则 WSGetByteString() 返回0;若函数成功,则返回非零值.
- 若 WSGetByteString() 失败,则使用 WSError() 检索错误代码.
- WSTP 的标头文件 wstp.h 已对 WSGetByteString() 作出声明.
范例
基本范例 (1)
#include "wstp.h"
/* read a string encoded with codes from ToCharacterCode[] from a link */
void f(WSLINK lp)
{
const unsigned char *string;
int length;
if(! WSGetByteString(lp, &string, &length, 0))
{
/* unable to read the byte string from lp */
return;
}
/* ... */
WSReleaseByteString(lp, string, length);
}