C ++最有效的方法来获取一个长字符串中间有一个值的子字符串

C++ Most effective way to grab a substring with a value in the middle of a long string

我想找到最有效的方法来做这样的事情:

一个包含各种数据的大字符串,例如:

plushieid:5637372&plushieposition:12757&plushieowner:null&totalplushies:5637373

我想创建一个函数,输入为 "plushieposition",我希望它找到 return 带有 plushieposition:12757 的字符串。

我能想到的唯一办法就是找到plushieposition的位置,然后扫描&,把剩下的删掉。但是,有更清洁的方法吗?如果没有,在代码中执行此操作的最佳方法是什么?

我在理解字符串扫描实践时遇到了一些困难。

使用std::string::find()求出起始位置和停止位置,然后使用std::string::substr()提取它们之间的内容,eg:

string extract(const string &s, const string &name)
{
    string to_find = name + ":";
    string::size_type start = s.find(to_find);
    if (start == string::npos) return "";
    string::size_type stop = s.find('&', start + to_find.size());
    return s.substr(start, stop - start);
}
string s = "plushieid:5637372&plushieposition:12757&plushieowner:null&totalplushies:5637373";
string found = extract(s, "plushieposition");

Online Demo