🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

SiddiqSoft.string2map

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

SiddiqSoft.string2map

Parse of key-value pair from string

2.4.3
NuGet
Version published
Maintainers
1
Created
Source

string2map and string2vector

CodeQL Build Status

Simple C++17 library to aid in the parsing of HTTP headers into a STL map-type container.

Objective

Convert the input string with the specified delimiters into a map of key-value pairs with the given input:

  • std::[w]string
  • Key delimiter (example: : , :, =, = )
  • Value delimiter (end of the key-value pair element, example: CRLF)
  • Destination output type for key/value: string or wstring.
  • Destination container type: map, multimap, unordered_map.

API

namespace siddiqsoft::string2map
{
    template <typename T, typename D = T, typename R = std::map<D, D>>
    R parse(T& src, const T& keyDelimiter, const T& valueDelimiter, const T& terminalDelimiter= T{}) noexcept(false)
}
typenameTypeComment
Tstring or wstringType of the source string
Dstring or wstringType of the destination string (used in the container)
Rmap, unordered_map, multimapGenerally type is container<D,D>
namespace siddiqsoft::string2vector
{
    template <typename T>
    std::vector<T> parse(const T& src, const T& keyDelimiter)
}
typenameTypeComment
Tstring or wstringType of the source string

Usage

Get it from nuget or you can submodule it.

#include <string>
#include <map>

#include "siddiqsoft/string2map.hpp"

TEST(parse, Test_string2map)
{
    std::string sampleStr{ "Host: duplicate\r\n"
                    "Host: hostname.com\r\n"
                    "Content-Type: text\r\n"
                    "Content-Length: 99\r\n\r\n" };

    auto kvmap= siddiqsoft::string2map::parse<string,  // input string
                                              wstring, // transform to wstring
                                              map<wstring,wstring> // destination container
                                             >(sampleStr);

    // We expect only 3 items even though there is a duplicate key in the source string.
    // The std::map container ensures unique keys.
    EXPECT_EQ(3, kvmap.size());
}


TEST(parse, Test_string2vector)
{
    std::string sampleStr{ "/a/b/c/d" };

    auto kv= siddiqsoft::string2vector::parse<string>(sampleStr);

    EXPECT_EQ(4, kv.size());
}

© 2020 Siddiq Software LLC. All rights reserved. Refer to LICENSE.

Keywords

parser

FAQs

Package last updated on 16 Jan 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts