char型配列を文字列にする関数CharArrayToString()の使い方【MQL4】

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

シェアする

  • このエントリーをはてなブックマークに追加

フォローする