从字符串中获取键/值对并存储在地图中
Posted
技术标签:
【中文标题】从字符串中获取键/值对并存储在地图中【英文标题】:Taking key/value pair from string and storing in map 【发布时间】:2011-09-20 14:54:29 【问题描述】:将字符串一分为二的最佳方法是什么?我有这个但无法正确获取“名称”,因为 substr 不允许我设置从哪里开始和在哪里结束,只能设置从哪里开始以及有多少个字符(我不知道):
string query = "key=value";
string key;
string value;
int positionOfEquals = query.find("=");
key = query.substr(0, positionOfEquals );
value = query.substr(positionOfEquals + 1);
【问题讨论】:
刚刚意识到我犯了一个非常愚蠢的错误。度过了漫长的一天。 key = query.substr(0, positionOfEquals); 这次更正后还有问题吗? 嗯,我想现在的问题是,就性能和良好实践而言,这是最好的方法吗? 【参考方案1】:你的方法很好,但你仍然有一个错误。如果没有'='
怎么办?
string query = "key=value";
string key;
string value;
int positionOfEquals = query.find("=");
key = query.substr(0, positionOfEquals );
if(positionOfEquals != string::npos)
value = query.substr(positionOfEquals + 1);
【讨论】:
向可能想知道这是如何工作的任何人澄清一下:如果输入字符串query
为空和/或不包含 =
,那么 key
将收到整个字符串的副本- 因为find()
将返回npos
,这意味着“无位置”,但在值方面包含来自std::size_t
... 和substr()
的最大可能索引在输入长度之后停止(此处为npos
)或在输入字符串的结尾,以先到者为准。以上是关于从字符串中获取键/值对并存储在地图中的主要内容,如果未能解决你的问题,请参考以下文章
php - 如何在关联数组的数组中搜索多个键/值对并返回匹配项?