私のアプリケーションは、いくつかの Unicode 文字列 (<10) を管理する必要があります。これらの文字列の内容は動的であり、アプリケーションの実行によって変化する可能性があります。文字列を格納するために、UnicodeString 型のオブジェクトを使用しています。
この問題を解決する 1 つの方法は、次のような Unicode 文字列と同じ数のメンバー変数を作成することです。
UnicodeString str1;
UnicodeString str2;
...
UnicodeString strN;
このソリューションは、少なくとも一見すると非常に単純です。しかし、スケーラビリティに問題があります。将来、文字列の数が増えると、読みにくい大きなコードが作成されるリスクがあります。したがって、文字列を管理するために次のようなものを作成することを考えました。
std::map<HWND, UnicodeString> file_names; ///< member variable of form TForm1
すべての文字列は、いくつかの編集ボックスに接続されています。ウィンドウ ハンドルを辞書のキーとして使用できます。
私が理解していないこと - この場合、ユニコード文字列を格納するためのスペースの割り当てと割り当て解除を担当するのは誰ですか? ローカル スタックに UnicodeString 変数を作成するとします。
void TForm1::ProcessFile(TEdit *edit_box)
{
UnicodeString str = "C:\\Temp\\ws.gdb";
file_name[edit_box->Handle] = str;
}
str変数の内容は、メンバー関数ProcessFileの終了後も存続しますか?