StringToShortArray

この関数は文字列をシンボルごとに ushort 型の配列の指定された部分にコピーし、 複製された要素の数を返します。

int  StringToShortArray(
  string  text_string,    // ソース文字列
  ushort& array[],        // 配列
  int    start=0,        // 配列でのコピー開始位置
  int    count=-1        // シンボル数
  );

パラメータ

text_string

[in]  複製する文字列

array[]

[out] ushort 型の配列(wchar_t type 型のアナログ)

start=0

[in]  コピー開始位置。デフォルトでは 0。

count=-1

[in]  複製する配列要素数。結果の文字列の長さを定義します。初期値は、配列の最後または終了する 0まで複製することを意味する -1です。最後の 0 も受け取り側の配列に複製され、動的配列のサイズは文字列のサイズに応じて増加出来ます。動的配列のサイズはが文字列の長さを超える場合は、配列のサイズは縮小されません。

戻り値

複製された要素の数

 

例:

//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 変換する文字を含む文字列
  string text = "Chars: ❤♫☎✈✣☏☀✉☆☁♕♠®✧❆♣   ";
  ushort short_array[];
//--- 入力文字列内の「:」文字の位置を検索し、次の文字から始まる部分文字列を抽出する
  int   pos=StringFind(text, ":");
  string str=(pos<0 ? text : StringSubstr(text, pos+1));
//--- 結果の文字列の左右からスペース、キャリッジ移動、タブ文字を削除する
  StringTrimLeft(str);
  StringTrimRight(str);
//--- 結果の文字列をushort配列にコピーし、結果の配列を操作ログに出力する
  int copied=StringToShortArray(str, short_array);
  PrintFormat("String of characters length: %u\n"
              "Number of characters copied (with terminal 0): %d\n"
              "Array of chars for the string '%s':",
              StringLen(str), copied, str);
  ArrayPrint(short_array, 0, " | ");
  /*
  結果:
  String of characters length: 16
  Number of characters copied (with terminal 0): 17
  Array of chars for the string '❤♫☎✈✣☏☀✉☆☁♕♠®✧❆♣':
  10084 | 9835 | 9742 | 9992 | 10019 | 9743 | 9728 | 9993 | 9734 | 9729 | 9813 | 9824 |   174 | 10023 | 10054 | 9827 |     0
  */
 }

参照

ShortArrayToStringStringToCharArrayコードページの利用