从字符串中获取键/值对并存储在地图中

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 - 如何在关联数组的数组中搜索多个键/值对并返回匹配项?

如何在 json 根节点中添加键值对并使用 SQL Server 将其转换为表

如何递归遍历 R 列表中的所有键值对并修改值? [复制]

从包含键值对的字符串中获取python字典

从配置文件 qsetting 中删除键/值对

Redis中的数据类型及其基本使用