関数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