SiddiqSoft.string2map
2.4.2
dotnet add package SiddiqSoft.string2map --version 2.4.2
NuGet\Install-Package SiddiqSoft.string2map -Version 2.4.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SiddiqSoft.string2map" Version="2.4.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SiddiqSoft.string2map --version 2.4.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SiddiqSoft.string2map, 2.4.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SiddiqSoft.string2map as a Cake Addin #addin nuget:?package=SiddiqSoft.string2map&version=2.4.2 // Install SiddiqSoft.string2map as a Cake Tool #tool nuget:?package=SiddiqSoft.string2map&version=2.4.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
string2map and string2vector
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
orwstring
. - 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)
}
typename | Type | Comment |
---|---|---|
T |
string or wstring |
Type of the source string |
D |
string or wstring |
Type of the destination string (used in the container) |
R |
map , unordered_map , multimap |
Generally type is container<D,D> |
namespace siddiqsoft::string2vector
{
template <typename T>
std::vector<T> parse(const T& src, const T& keyDelimiter)
}
typename | Type | Comment |
---|---|---|
T |
string or wstring |
Type 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());
}
<small align="right">
© 2020 Siddiq Software LLC. All rights reserved. Refer to LICENSE.
</small>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
native | native is compatible. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on SiddiqSoft.string2map:
Package | Downloads |
---|---|
SiddiqSoft.restcl
Focussed REST Client for modern C++ |
|
SiddiqSoft.CosmosClient
Azure Cosmos REST-API Client for Modern C++ |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.4.2 | 158 | 12/8/2024 |
2.4.1 | 77 | 12/8/2024 |
2.4.0 | 160 | 12/7/2024 |
2.3.1 | 2,063 | 11/20/2021 |
2.3.0 | 22,376 | 9/9/2021 |
2.2.2 | 1,699 | 8/7/2021 |
2.2.1 | 1,719 | 8/3/2021 |
2.2.0 | 3,257 | 8/3/2021 |
2.1.1 | 3,685 | 8/2/2021 |
1.4.1 | 1,432 | 7/22/2021 |
1.4.0-main0001 | 1,448 | 7/22/2021 |
1.3.0 | 1,790 | 7/10/2021 |
1.2.2 | 1,623 | 7/9/2021 |
1.2.1-main0001 | 1,548 | 7/9/2021 |