【MQL5】StringSetLength関数について

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

StringSetLength関数の働き・役割

StringSetLength関数は、指定された文字列の長さを設定するために使用されます。この関数は、エキスパートアドバイザースクリプト内で文字列を操作する際に便利です。特に、文字列の長さを動的に変更する場合に役立ちます。

StringSetLength関数の引数について

StringSetLength関数は、以下の2つの引数を取ります:

string& string_var: 長さを変更したい文字列。この引数参照渡しです。
参照渡しについては↓の記事をご参照ください。

uint new_length: 設定する新しい文字列の長さ(文字数)。

StringSetLength関数の戻り値について

StringSetLength関数は、成功した場合にはtrueを返し、失敗した場合にはfalseを返します。エラーコードを取得するためには、GetLastError関数を使用します。

GetLastError関数についての詳細は↓の記事をご参照ください

StringSetLength関数を使う際の注意点

  • 新しい長さが現在の長さよりも短い場合、余分な文字は切り捨てられます。
  • 文字列バッファサイズは変更されません。つまり、バッファサイズは維持されたまま(=内部的には余裕を持った容量が保持されまま)、文字列の論理的な長さ(=見た目上の長さ)のみが変更されます。
// OnStart関数はスクリプトの実行が開始されたときに自動的に呼び出されます
void OnStart() 
{
    // 文字列を定義します
    string text = "123456789012345";
    
    // 文字列とその長さをエキスパートログに表示します
    PrintFormat("StringSetLength()前の文字列 '%s' の長さは %d 文字", text, StringLen(text));
    
    // 文字列の長さを10文字に短縮します
    StringSetLength(text, 10);
    
    // 文字列とその変更後の長さをエキスパートログに表示します
    PrintFormat("StringSetLength()後の文字列 '%s' の長さは %d 文字", text, StringLen(text));
    
    /* 
    結果:
    StringSetLength()前の文字列 '123456789012345' の長さは 15 文字
    StringSetLength()後の文字列 '1234567890' の長さは 10 文字
    */
}

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

このサンプルコードでは、まず15文字の文字列を定義し、それを10文字に短縮する様子を示しています。StringSetLength関数を使用することで、文字列の長さを動的に変更できるため、柔軟な文字列操作が可能になります。

StringSetLength関数とStringInit関数の違い

StringSetLength関数StringInit関数は、どちらも文字列の初期化や設定に関わる関数ですが、用途と動作にいくつかの違いがあります。

目的:

動作:

バッファの扱い:

使用ケース:

<参照>

StringAdd関数/StringBufferLen関数/StringCompare関数/StringLen関数/StringConcatenate関数/StringFill関数/StringInit関数/StringFind関数/StringGetCharacter関数/StringReplace関数/StringReserve関数/StringSetCharacter関数/StringSplit関数/StringSubstr関数/StringToLower関数/StringToUpper関数/StringTrimLeft関数/StringTrimRight関数

コメント

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