Я хочу найти наиболее эффективный способ сделать что-то вроде этого:
Большая строка, содержащая все виды данных, например:
plushieid:5637372&plushieposition:12757&plushieowner:null&totalplushies:5637373
Я хочу сделать функцию, которая будет иметь ввод, скажем, "plushieposition"
, и я найду и верну строку с plushieposition:12757
.
Единственный способ, который я могу придумать, это найти положение plushieposition
, а затем отсканировать &
и удалить остальные. Но есть ли более чистый способ? Если нет, то как лучше всего это сделать в коде?
У меня небольшие проблемы с пониманием методов сканирования строк.
Используйте std::string::find()
, чтобы найти начальную и конечную позиции, а затем используйте std::string::substr()
, чтобы извлечь то, что находится между ними, например:
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");