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()の文字コード配列は,空白文字で終らない.
- 改行のような文字は,∖n等のASCII形式ではなく,原始文字コードで特定される.
- WSGetByteString()は不変のデータを返す.
- WSGetByteString()はエラーがあると0を返し,関数が成功すると0以外の値を返す.
- WSError()を使うと,WSGetByteString()が不成功の場合にエラーコードを引き出すことができる.
- WSGetByteString()は,WSTPヘッダファイルwstp.hの中で宣言される.
例題
例 (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);
}