C++ Самый эффективный способ получить подстроку со значением в середине длинной строки.

Я хочу найти наиболее эффективный способ сделать что-то вроде этого:

Большая строка, содержащая все виды данных, например:

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

Я хочу сделать функцию, которая будет иметь ввод, скажем, "plushieposition", и я найду и верну строку с plushieposition:12757.

Единственный способ, который я могу придумать, это найти положение plushieposition, а затем отсканировать & и удалить остальные. Но есть ли более чистый способ? Если нет, то как лучше всего это сделать в коде?

У меня небольшие проблемы с пониманием методов сканирования строк.

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте 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");

Онлайн-демонстрация

Другие вопросы по теме