WSGetByteSymbol (C 函数)

int WSGetByteSymbol(WSLINK link,const unsigned char **sp,int *len,long spec)

从由 link 指定的 WSTP 连接中获取一个对应于一个符号名称的字符字符串,把结果字符串存在 sp,字符数存在 len. 代码 spec 被用于 Wolfram 语言的字符代码大于255的任意字符.

更多信息

  • WSGetByteSymbol() 为字符代码数组分配内存. 必须调用 WSReleaseByteSymbol() 释放该内存. 如果 WSGetByteSymbol() 失败并且函数的返回值表明一个错误,不要调用含有 sp 中的值的 WSReleaseByteSymbol().
  • WSGetByteSymbol() 在没有出现特殊字符的情况下很方便.
  • WSGetByteSymbol() 使用的字符代码与由 Wolfram 语言中 ToCharacterCode 返回的完全一样.
  • WSGetByteSymbol() 中的字符代码数组不是由零字符终止.
  • 字符例如,换行符是由其原始字符代码指定,而不是 ASCII 的形式诸如 n.
  • WSGetByteSymbol() 返回不可变的数据.
  • 若发生错误,则 WSGetByteSymbol()返回0;若函数成功,则返回非零值.
  • WSGetByteSymbol() 失败,则使用 WSError() 检索错误代码.
  • WSTP 的标头文件 wstp.h 已对 WSGetByteSymbol() 作出声明.

范例

基本范例  (1)

#include "wstp.h"

/* read a symbol encoded with codes from ToCharacterCode[] from a link */

void f(WSLINK lp)
{
    const unsigned char *symbol;
    int length;

    if(! WSGetByteSymbol(lp, &symbol, &length, 0))
        {
            /* unable to read the byte-encoded symbol from lp */
            return;
        }

    /* ... */

    WSReleaseByteSymbol(lp, symbol, length);
}