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
	

シェアする

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

フォローする