【MQL5】CharToString関数について

MQL5リファレンス
スポンサーリンク
スポンサーリンク

CharToString関数の働き・役割

CharToString関数は、数値コード(ANSIコード)を一文字の文字列に変換するために使用されます。

CharToString関数は、エキスパートアドバイザースクリプト内で文字コードを操作する際に便利です。

たとえば、特定の文字コードを対応する文字に変換して表示したり、他の文字列操作を行うために使用されます。

ANSIコードとは?

ANSIコードとは、American National Standards Institute(アメリカ国家規格協会)が制定した文字コード規格のことです。この規格は、英数字や記号などの文字を0から255までの数値で表現します。CharToString関数では、このANSIコードを用いて文字列に変換します。

CharToString関数の引数について

CharToString関数は、以下の1つの引数を取ります:

  • uchar char_code: 変換したいANSI文字のコード。この引数は、0から255までの範囲の数値を取ります。

CharToString関数の戻り値について

CharToString関数は、指定されたANSIコードに対応する一文字の文字列を返します。たとえば、コード65を渡すと、戻り値は文字「A」となります。

CharToString関数を使う際の注意点

CharToString関数を使用する際には、以下の点に注意してください:

  • 引数に渡すコードは、必ず0から255の範囲内にあることを確認してください。それ以外の値を渡すと、予期しない結果になる可能性があります。
  • 変換後の文字列は、文字列操作関数と同様に取り扱うことができますが、特定のエンコーディング(ANSI)に依存するため、他のエンコーディングでの使用には注意が必要です。

CharToString関数を使ったサンプルコード

以下に、CharToString関数を使用して文字コードを文字列に変換し、エキスパートログに出力する例を示します。

// OnStart関数はスクリプトの実行が開始されたときに自動的に呼び出されます
void OnStart() 
{
    // 文字コードの範囲をループで処理し、文字列に変換して配列に格納します
    string symbols[224];
    for(int i = 32; i <= 255; i++)
    {
        symbols[i - 32] = CharToString((uchar)i);
    }

    // 変換された文字列配列をエキスパートログに出力します
    Print("変換された文字列配列: ", ArrayToString(symbols, ", "));
}

// 配列を文字列に変換するヘルパー関数
string ArrayToString(string &array[], string delimiter)
{
    string result = "";
    for(int i = 0; i < ArraySize(array); i++)
    {
        if(i > 0) result += delimiter;
        result += array[i];
    }
    return result;
}

サンプルコードに使われた関数や文法要素の簡単な解説

初心者向けの解説

配列数 [224] について

string symbols[224];は、225個の文字列を格納するための配列を宣言しています。ANSIコードは32から255までの範囲で224個の文字があるため、このサイズが必要です。

ループの開始点 int i = 32 について

for(int i = 32; i <= 255; i++)では、32から始まるループを使って文字コードを変換しています。ANSIコードの32から255までの範囲には、表示可能な文字が含まれています。コード0から31までは制御文字(表示されない特別な文字)なので、32から始めています。

ArrayToString関数の挙動について

サンプルコード内のオリジナル関数であるArrayToString関数は、配列の各要素を指定された区切り文字で結合して1つの文字列に変換します。

// 配列を文字列に変換するヘルパー関数
string ArrayToString(string &array[], string delimiter)
{
    // 結果を格納するための空の文字列を用意します
    string result = "";
    
    // 配列の全ての要素をループで処理します
    for(int i = 0; i < ArraySize(array); i++)
    {
        // 現在の要素が最初の要素でない場合、区切り文字を追加します
        if(i > 0) result += delimiter;
        
        // 現在の要素を結果に追加します
        result += array[i];
    }
    
    // 最終的な結合された文字列を返します
    return result;
}
  1. string ArrayToString(string &array[], string delimiter)は、配列文字列に変換するためのヘルパー関数です。2つの引数を取ります。
  2. 関数内部では、まずresultという空の文字列を用意します。
  3. 配列の全ての要素をループで処理し、現在の要素が最初の要素でなければ、delimiterresultに追加します。
  4. 現在の要素resultに追加します。
  5. 最終的に、すべての要素が区切り文字で結合された文字列resultを返します。

例:

string arr[] = {"A", "B", "C"};
string result = ArrayToString(arr, ", "); // 結果は "A, B, C"

このようにして、配列内の要素を一つの文字列にまとめることができます。

CharToString関数を利用することで、文字コードを簡単に操作し、エキスパートログに出力したり、他の文字列操作を行うことができます。

CharToString関数とCharArrayToString関数の違いについて

CharToString関数CharArrayToString関数は、どちらも文字データを文字列に変換するための関数ですが、その用途と挙動にいくつかの違いがあります。

CharToString関数は、単一の文字(char型またはuchar型)を文字列に変換します。例えば、特定の文字を単独で文字列として処理したい場合に使用されます。この関数は主に、1つの文字を直接文字列に変換するシンプルな操作を行うために使用されます。

一方、CharArrayToString関数は、複数の文字を含む配列uchar型)を文字列に変換します。この関数は、文字の配列全体を結合して1つの連続した文字列として扱いたい場合に使用されます。特に、文字列データが配列形式で保存されている場合に便利です。

具体的な違いとして、CharToString関数は単一の文字を扱うのに対して、CharArrayToString関数配列全体を処理し、終端ゼロが含まれる場合、その時点で文字列が終了したと見なされます。これにより、配列内の複数の文字を効率的に結合し、1つの文字列として出力することが可能です。

以下は、それぞれの関数の使用例です。

CharToString関数の使用例

void OnStart()
{
   uchar charValue = 'A';
   string result = CharToString(charValue);
   Print(result); // 出力: "A"
}

CharArrayToString関数の使用例

void OnStart()
{
   uchar array[] = {'H', 'e', 'l', 'l', 'o'};
   string result = CharArrayToString(array);
   Print(result); // 出力: "Hello"
}

このように、CharToString関数は単一の文字を変換するために使われ、CharArrayToString関数は文字配列全体を変換するために使われます。これらの違いを理解することで、適切な状況で適切な関数を選択し、文字データの処理を効率化することができます。

<参照>

CharArrayToString関数

コメント

タイトルとURLをコピーしました