我的应用程序需要管理一些 unicode 字符串 (<10)。这些字符串的内容是动态的,可以通过应用程序运行而改变。为了存储字符串,我使用了 UnicodeString 类型的对象。
解决此问题的一种方法是创建与 unicode 字符串一样多的成员变量,例如:
UnicodeString str1;
UnicodeString str2;
...
UnicodeString strN;
至少乍一看,这个解决方案非常简单。但是可扩展性存在问题。如果将来字符串的数量会增加,我们就有可能创建难以阅读的大代码。所以我想创建这样的东西来管理字符串:
std::map<HWND, UnicodeString> file_names; ///< member variable of form TForm1
每个字符串都与某个编辑框相连。我可以使用窗口句柄作为字典的键。
我不明白 - 在这种情况下,谁应该负责分配和释放存储 unicode 字符串的空间?假设我在本地堆栈上创建 UnicodeString 变量:
void TForm1::ProcessFile(TEdit *edit_box)
{
UnicodeString str = "C:\\Temp\\ws.gdb";
file_name[edit_box->Handle] = str;
}
str变量的内容会在成员函数ProcessFile的末尾保留吗?