文字列を連結したい!

文字列の連結

文字列の連結とは、複数の文字列を繋いで一つの文字列にすることを指します。MQL4では「+」による文字列連結にも対応していますが、連結対象の文字列が多い場面で「+」による連結を使用するとソースコードが冗長になってしまう傾向があります。一方、関数による文字列連結を使用することで連結する内容が明確になりソースコードの可読性も向上しますので、連結する文字列の数に応じて使い分けると良いでしょう。

文字列を連結するStringConcatenate関数

文字列を連結するには、MQL4で提供されているStringConcatenate関数を使用します。

string StringConcatenate(
    void argument1,     // first parameter of any simple type
    void argument2,     // second parameter of any simple type
    ...                 // next parameter of any simple type
);

引用元:StringConcatenate – MQL4 Reference

引数

StringConcatenate関数は引数で渡された内容を連結する関数ですが、文字列以外を引数として渡した場合は自動的に文字列に変換して連結が行われます。引数の数は最低2個、最大で63個まで指定可能となります。

戻り値

引数で渡した全ての文字列が連結された結果が戻り値として返却されます。

使用例

string msg = "chart timeframe is ";
int timeframe = Period();

string result = StringConcatenate(msg, "M", timeframe, ".");
Alert(result);
実行結果
chart timeframe is M5.

上記例では、msgという変数に格納された文字列やチャートの時間足(Period関数で取得可能)を連結し、アラートで連結後の文字列を表示しています。

「+」による連結との違い

「+」による連結を使用する場合、文字列以外を指定するには文字列型への変換が必要になります。一方、StringConcatenate関数では変換の必要が無く、この点が大きな違いとなります。また冒頭でも触れましたがソースコードの可読性の観点からStringConcatenate関数を使用すべき場面もありますので、状況に応じて使い分けましょう。

StringAdd関数との違い

StringAdd関数では文字列を後ろに追加することしか出来ませんが、StringConcatenate関数では前後どのようにでも連結が可能となるため、より柔軟性に富んだ関数となります。しかし、連結が成功したかどうかの判断を行うことが出来ないため、連結の成功可否に応じて処理を分岐させる場合はStringAdd関数を使用する必要があります。

まとめ

文字列を連結するにはStringConcatenate関数を使用する
文字列以外の引数は自動的に文字列に変換される
引数の数は最大で63個まで指定可能
文字列の連結に成功したかどうかを判断することは出来ない

参考URL

StringConcatenate – MQL4 Reference
https://docs.mql4.com/strings/stringconcatenate