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");
我想找到最有效的方法来做这样的事情:
一个包含各种数据的大字符串,例如:
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");