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

関数StringToCharArray()の使い方

文字列をchar型の配列にコピーします。

関連記事一覧:WebRequest(),WEBREQUEST()を使うときの注意点

書式

int  StringToCharArray(
	string  text_string,        // コピー元の文字列
	uchar   &array[],             // コピー先配列  ※参照渡し
	int     start    = 0,        // コピー開始する配列インデックス
	int     count    = -1,       // コピーする文字数
	uint    codepage = CP_ACP    // コードページ
	);

戻り値

char型配列の要素数を返します。

サンプルコード

	string str = "abc";
	string str_JP = "あ";
	uchar   char_array[];
	
	//
	Print("CP_ACP:戻り値:",StringToCharArray(str,char_array,0,2));
	for(int i=0;i < StringToCharArray(str,char_array,0,2);i++){
		Print("文字列:abc;スタート位置(index):0;コピー文字数:2;CP_ACP:",char_array[i]);
	}
	/*
	[0]:97
	[1]:98
	StringToCharArray()の戻り値は:2
	*/
	
	Print("CP_ACP:戻り値:",StringToCharArray(str,char_array,1,2));
	for(int i=0;i < StringToCharArray(str,char_array,1,2);i++){
		Print("文字列:abc;スタート位置(index):1;コピー文字数:2;CP_ACP:",char_array[i]);
	}
	/*
	[0]:97
	[1]:97
	StringToCharArray()の戻り値は:2
	*/

	Print("CP_ACP:戻り値:",StringToCharArray(str,char_array,2,1));
	for(int i=0;i < StringToCharArray(str,char_array,2,1);i++){
		Print("文字列:abc;スタート位置(index):2;コピー文字数:1;CP_ACP:",char_array[i]);
	}
	/*
	[0]:97
	StringToCharArray()の戻り値は:1
	*/
	
	//str_JP = abc  ACP  宣言時に初期化しているものは省略可能
	/*
	StringToCharArray(str,char_array);
	と
	StringToCharArray(str_JP,char_array,0,-1,CP_ACP);
	は同じです。
	*/
	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
	*/
	
	//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
	*/
		
	//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]:130
	[1]:160
	[2]:0  
	StringToCharArray()の戻り値は:3 
	*/

	//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]:227
	[1]:129
	[2]:130
        [3]:0
	StringToCharArray()の戻り値は:4
	*/

サンプルコード実行結果

代表的なコードページ一覧

  • CP_ACP 0 現在のWindows ANSIコードページ。
  • CP_OEMCP 1 現在のシステムOEMコードページ。
  • CP_MACCP 2 現在のシステムのMacintoshコードページ。※1
  • CP_THREAD_ACP 3 現在のスレッドのWindows ANSIコードページ。
  • CP_SYMBOL 42 シンボルコードページ
  • CP_UTF7 65000 UTF-7コードページ。
  • CP_UTF8 65001 UTF-8コードページ。

※1注: 最近のMacintoshコンピューターはエンコードにUnicodeを使用するため、この値は以前に作成されたプログラムコードで主に使用され、現在は使用されていません。
参考元:
Using a Codepage in String Conversion Operations

2.2.1 Supported Codepage in Windows

別サイト:wikipedia
コードページ

シェアする

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

フォローする