【MQL4勉強プログラミング】StringSetChar()関数で指定した文字列の指定した位置の文字に変更

ザフナーラボブログ

StringSetChar()関数は、指定した文字列の指定した位置の文字に変更を加えるために使用します。

StringSetChar()関数は、以下のように定義されています。

string StringSetChar(
string string_var,
int pos,
ushort value
);

各引数の意味は、以下のとおりです。

  • string string_var
    変更を加えたい文字列を指定します。
  • int pos
    変更を加えたい文字の位置を指定します。
    位置は、文字列の右端を「0」とし、右側に向かって「1」、「2」……と数え、StringLen()関数(詳細は「こちら」を参照してください。)で取得される値まで指定することができます。
  • ushort value
    変更を加える新しい文字の文字コード(ASCII Code)を指定します。

注意点

第二引数で指定した値が、第一引数で指定した文字列の長さ(=文字数)よりも小さく、かつ、第三引数で指定した文字コードが「0」の場合は、第一引数で指定した文字列は、第二引数で指定した位置で切り取られます。

第二引数で指定した値が、第一引数で指定した文字列の長さと等しい場合は、第三引数で指定した文字が第一引数で指定した文字列の末尾に加えられ、文字列の長さが1文字分長くなります。

具体例

  • 指定した文字列の右から4番目の文字に変更を加える場合は、以下のように記述します。
    
    int start()
    {
     string Str_1 = "abcde";
     
     string Res = StringSetChar(Str_1,3,'D');
     
     Print(Res);
     /*ターミナルウィンドウのエキスパートタブに
       「abcDe」と表示される*/
     
     return(0);
    }
    

    Print()関数の詳細については「こちら」を参照してください。

  • 指定した文字列の指定した位置で、文字列を切り取る場合は、以下のように記述します。
    
    int start()
    {
     string Str_1 = "abcde";
     
     string Res = StringSetChar(Str_1,3,0);
     
     Print(Res);
     /*ターミナルウィンドウのエキスパートタブに
       「abc」と表示される*/
     
     return(0);
    }
    
  • 指定した文字列の末尾に、指定した文字を加える場合は、以下のように記述します。
    
    int start()
    {
     string Str_1 = "abcde";
     
     string Res = StringSetChar(Str_1,5,'f');
     
     Print(Res);
     /*ターミナルウィンドウのエキスパートタブに
       「abcdef」と表示される*/
    
     return(0);
    }