如何在C++Builder 6中使用TStringList创建键值对?
在C++Builder 6中用TStringList创建键值对的正确方法
你遇到的问题是因为C++Builder 6里的TStringList::Values属性不支持通过整数下标访问,它的参数是键名字符串,而非索引序号。你用Values[0]时,程序会把整数0转换成字符串"0",而列表里没有键为"0"的条目,所以返回空字符串。
正确的实现方式
有两种可靠的方法创建和访问键值对:
直接通过Values属性赋值
这是最直观的方式,赋值时会自动添加新的键值对,若键已存在则更新对应的值:TStringList *StringList = new TStringList(); StringList->Values["Sydney"] = "2000"; StringList->Values["Beijing"] = "2008"; // 取值时用键名访问 AnsiString sydneyVal = StringList->Values["Sydney"]; // 得到"2000"用Add方法添加格式正确的字符串,配合键名取值
如果你坚持用Add方法添加"键=值"格式的字符串,记得用键名而非下标访问Values:TStringList *StringList = new TStringList(); StringList->Add("Sydney=2000"); // 正确取值方式 AnsiString sydneyVal = StringList->Values["Sydney"]; // 得到"2000" // 而Names[0]可以正常获取键名"Sydney" AnsiString sydneyName = StringList->Names[0];
补充说明
C++Builder 6的TStringList中,Names属性是通过整数下标访问键名,但Values属性只能通过键名来对应取值。后续版本(如CB11)扩展了Values对整数下标的支持,但BCB6没有这个特性。
内容的提问来源于stack exchange,提问作者Mark Di Val
相关产品推荐
相关产品推荐

