関数CharArrayToString()の使い方
このページの関数CharArrayToString()はchar型の配列から文字列に変換(デコード)
下記の記事の関数StringToCharArray()は文字列からchar型の配列に変換(エンコード)
関連記事:StringToCharArray()
書式
string CharArrayToString( uchar array[], // uchar配列 int start = 0, // 変換を開始するインデックス int count = -1, // 変換する要素数 uint codepage = CP_ACP // コードページ );
関連記事一覧:WEBREQUEST()を使うときの注意点,関数WebRequest()
戻り値
char配列から文字列に変換した文字列を返します。
サンプル
string str = "abc";
string str_JP = "あ";
uchar char_array[];
// WHOLE_ARRAY = 0 // 定義済み定数:配列の要素をすべて処理する
Print("CP_ACP:戻り値:",StringToCharArray(str,char_array));
for(int i=0;i < StringToCharArray(str,char_array);i++){
Print("文字列:abc;","配列index:",i,";CP_ACP:",char_array[i]);
}
/* [0]:97 [1]:98 [2]:99 [3]:0 StringToCharArray()の戻り値は:4 */
Print("文字列:abc;","CharArrayToString:CP_ACP:",CharArrayToString(char_array,0,WHOLE_ARRAY));
// CharArrayToString()=>abc
//str = abc UTF8
Print("CP_UTF8:戻り値:",StringToCharArray(str,char_array,0,-1,CP_UTF8));
for(int i=0;i < StringToCharArray(str,char_array,0,-1,CP_UTF8);i++){
Print("文字列:abc;","配列index:",i,";CP_UTF8:",char_array[i]);
}
/* [0]:97 [1]:98 [2]:99 [3]:0 StringToCharArray()の戻り値は:4 */
Print("文字列:abc;","CharArrayToString:CP_UTF8:",CharArrayToString(char_array,0,WHOLE_ARRAY,CP_UTF8));
// CharArrayToString()=>abc
//str_JP = あ ACP 宣言時に初期化しているものは省略可能
Print("CP_ACP:戻り値:",StringToCharArray(str_JP,char_array));
for(int i=0;i < StringToCharArray(str_JP,char_array);i++){
Print("文字列:あ;","配列index:",i,";CP_ACP:",char_array[i]);
}
/* [0]:-126 [1]:-96 [2]:0 StringToCharArray()の戻り値は:3 */
Print("文字列:あ;","CharArrayToString:CP_UTF8:",CharArrayToString(char_array,0,WHOLE_ARRAY));
// CharArrayToString()=>あ
//str_JP = あ UTF8
Print("CP_UTF8:戻り値:",StringToCharArray(str_JP,char_array,0,-1,CP_UTF8));
for(int i=0;i < StringToCharArray(str_JP,char_array,0,-1,CP_UTF8);i++){
Print("文字列:あ;","配列index:",i,";CP_UTF8:",char_array[i]);
}
/* [0]:-29 [1]:-127 [2]:-126 StringToCharArray()の戻り値は:3 */
Print("文字列:あ;","CharArrayToString:CP_UTF8:",CharArrayToString(char_array,0,WHOLE_ARRAY,CP_UTF8));
// CharArrayToString()=>あ

違う文字コードでデコードした場合
Print("CP_ACP:戻り値:",StringToCharArray(str_JP,char_array));
for(int i=0;i < StringToCharArray(str_JP,char_array);i++){
Print("文字列:あ;","配列index:",i,";CP_ACP:",char_array[i]);
}
/* [0]:130 [1]:160 [2]:0 StringToCharArray()の戻り値は:3 */
Print("文字列:あ;","CharArrayToString:CP_UTF8:",CharArrayToString(char_array,0,WHOLE_ARRAY,CP_UTF8));
// CharArrayToString()=>??
Print("CP_ACP:戻り値:",StringToCharArray(str,char_array));
for(int i=0;i < StringToCharArray(str,char_array);i++){
Print("文字列:abc;","配列index:",i,";CP_ACP:",char_array[i]);
}
/* [0]:97 [1]:98 [2]:99 [3]:0 StringToCharArray()の戻り値は:4 */
Print("文字列:abc;","CharArrayToString:CP_UTF8:",CharArrayToString(char_array,0,WHOLE_ARRAY,CP_UTF8));
// CharArrayToString()=>abc

開始位置と文字数を変えたサンプル
Print("CP_ACP:戻り値:",StringToCharArray(str,char_array));
for(int i=0;i < StringToCharArray(str,char_array);i++){
Print("文字列:abc;","配列index:",i,";CP_ACP:",char_array[i]);
}
/* [0]:97 [1]:98 [2]:99 [3]:0 StringToCharArray()の戻り値は:4 */
// s=start(index)開始位置 c=count文字数
Print("文字列:abc;","CharArrayToString:CP_ACP::s:0;c:2;",CharArrayToString(char_array,0,2));
// CharArrayToString()=>ab
Print("文字列:abc;","CharArrayToString:CP_ACP::s:1;c:2;",CharArrayToString(char_array,1,2));
// CharArrayToString()=>bc
Print("文字列:abc;","CharArrayToString:CP_ACP::s:2;c:1;",CharArrayToString(char_array,2,1));
// CharArrayToString()=>c

