#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <string>
#include <map>
#include <boost/algorithm/string.hpp>

int main(int argc, char* argv[]) {
	std::string raw = "HTTP/1.1 200 OK\r\n"
		"Content-Type: image/jpeg; charset=utf-8\r\n"
		"Content-Length: 123\r\n\r\n";

	std::map<std::string, std::string> headers;
	std::istringstream rawstream(raw);
	std::string header;
	while (std::getline(rawstream, header) && header != "\r") {
		std::string::size_type index = header.find(':');
		if (index != std::string::npos) {
			headers.insert(std::make_pair(
				boost::algorithm::to_lower_copy(boost::algorithm::trim_copy(header.substr(0, index))),
				boost::algorithm::trim_copy(header.substr(index + 1))
			));
		}
	}

 	for (auto& kv : headers) {
 		std::cout << kv.first << ": " << kv.second << std::endl;
 	}

	return 0;
}
