Страница 1 из 1

Парсинг строки ключ1=значение1&ключ2=значение2&...&ключN=значениеN

Добавлено: 14 авг 2024, 17:04
ya
Парсинг строки ключ1=значение1&ключ2=значение2&...&ключN=значениеN

Код: Выделить всё

#include <iostream>
#include <string>
#include <map>
#include <sstream>

std::map<std::string, std::string> parseData(const std::string& data) {
    std::map<std::string, std::string> result;
    std::string keyValuePair;
    std::istringstream stream(data);

    while (std::getline(stream, keyValuePair, '&')) {
        size_t pos = keyValuePair.find('=');
        if (pos != std::string::npos) {
            std::string key = keyValuePair.substr(0, pos);
            std::string value = keyValuePair.substr(pos + 1);
            result[key] = value;
        }
    }

    return result;
}

int main() {
    std::string data = "ключ1=значение1&ключ2=значение2&ключ3=значение3";
    std::map<std::string, std::string> parsedData = parseData(data);

    for (const auto& pair : parsedData) {
        std::cout << pair.first << " = " << pair.second << std::endl;
    }

    return 0;
}

Мы используем <iostream> для вывода, <string> для работы со строками, <map> для хранения пар ключ-значение и <sstream> для разбиения строки на части.

Функция parseData: Эта функция принимает строку, разбивает её на части, разделённые &, а затем на каждую пару ключ-значение, разделённую =. Она сохраняет эти пары в std::map, где ключи и значения имеют тип std::string.

компиляция

Код: Выделить всё

g++ -std=c++11 -o parse parse.cpp

Re: Парсинг строки ключ1=значение1&ключ2=значение2&...&ключN=значениеN

Добавлено: 14 авг 2024, 17:29
ya
Чтобы записать данные в переменную типа std::string вместо их вывода на экран

Код: Выделить всё

#include <iostream>
#include <string>
#include <sstream>
#include <utility> // для std::pair
#include <map>     // для std::map

int main() {
    // Пример std::map с некоторыми данными
    std::map<std::string, int> myMap = {
        {"apple", 1},
        {"banana", 2},
        {"cherry", 3}
    };

    std::ostringstream oss; // Создаем ostringstream для форматирования строки

    // Перебираем элементы в std::map
    for (const auto& pair : myMap) {
        oss << pair.first << " = " << pair.second << "\n"; // Форматируем строку с использованием ostringstream
    }

    // Получаем результат как std::string
    std::string result = oss.str();

    // Чтобы убедиться в правильности, мы можем вывести результат на экран
    std::cout << result;

    return 0;
}
Объяснение кода:
std::map - Мы создаем пример отображения (map) с некоторыми значениями.
std::ostringstream - Мы инициализируем объект ostringstream, который позволяет нам форматировать строки в памяти.
Цикл for - Мы перебираем элементы std::map и добавляем каждую пару ключ-значение в строку.
oss.str() - После завершения цикла мы извлекаем всю собранную строку в переменную result типа std::string.
Печать результата - Мы выводим результат на экран, чтобы проверить, что все работает корректно.