StringToCharArray 関数
この関数は、Unicodeから ANSIに変換した文字列をシンボル単位で uchar型配列の指定した場所にコピーします。そしてコピーした要素数が取得されます。
uchar型の配列には ANSIに対応した 10進数のコードが格納されることになります。
データ型と構成・戻り値
int StringToCharArray(①, ②, ③, ④, ⑤);
戻り値は、コピーした要素数を返します。
引数 [5]
StringToCharArray関数は 5個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | text_string | string | - | - | コピー元の文字列。 |
② | array[] | uchar& | - | - | コピー先の配列(uchar型)。 |
③ | start | int | - | 0 | コピーを開始する位置。最初の値は 0からです。 |
④ | count | int | - | -1 | コピーする配列要素の数。 -1を設定すると③の開始位置から配列の終わりまでが対象になります。 |
⑤ | codepage | uint | - | CP_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になります。