ANSIをuchar型配列へコピー StringToCharArray 関数

関数

変換関数

StringToCharArray 関数

 この関数は、Unicodeから ANSIに変換した文字列をシンボル単位で uchar型配列の指定した場所にコピーします。そしてコピーした要素数が取得されます。

 uchar型の配列には ANSIに対応した 10進数のコードが格納されることになります。

データ型と構成・戻り値

int StringToCharArray(①,②,③,④,⑤);

 戻り値は、コピーした要素数を返します。

引数 [5]

 StringToCharArray関数は 5個の引数で構成されます。


引数名データ型単位初期値説明
text_stringstringコピー元の文字列。
array[]uchar&コピー先の配列(uchar型)。
startint0コピーを開始する位置。最初の値は 0からです。
countint-1コピーする配列要素の数。
-1を設定すると③の開始位置から配列の終わりまでが対象になります。
codepageuintCP_ACPコードページの値。
CP_ACPは ANSIコード表を基に変換されます。
※初期値があるものは省略可。但し、省略した引数以降は省略しなければなりません。

使用例

StringToCharArray関数を使った uchar型配列へのコピー

 コピー元の文字列を StringToCharArray関数でコピーして uchar型の配列に格納します。そして、その時にコピーした要素数(文字列数)と uchar型の配列に格納したコードを出力します。

コード

// StringToCharArray関数を使った uchar型配列へのコピー
#property strict
void OnInit() {
   string str1 = "ANSI";                  // コピー元の文字列
   string str2;                           // コピー先の文字列
   uchar arr[];                           // コピー先の配列
   int e, i;
   
   e = StringToCharArray(str1, arr);      // コピーした要素数+配列へコピー
   
   str2 = (string)arr[0];
   for(i=1; i<e; i++) {
      str2 = str2 + ", " + (string)arr[i];
   } 
   
   Print("コピー要素数:", e);
   Print("arr[", e, "]={ ", str2, " }");  // コピー先の配列状態
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

 結果は ANSIコード表に対応した10進数の値がコピー先の配列に格納されます。この逆の処理を CharArrayToString関数のページで行なっていますので参考にしてください。

※コピー元の文字数が「ANSI」の 4文字なので要素数が 4になるはずなのですが、何故か 5になります。文字 または 配列の最後に 0(NUL)が入るようです。

タイトルとURLをコピーしました