#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;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Ym9vc3QvYWxnb3JpdGhtL3N0cmluZy5ocHA+CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CglzdGQ6OnN0cmluZyByYXcgPSAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKCQkiQ29udGVudC1UeXBlOiBpbWFnZS9qcGVnOyBjaGFyc2V0PXV0Zi04XHJcbiIKCQkiQ29udGVudC1MZW5ndGg6IDEyM1xyXG5cclxuIjsKCglzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IGhlYWRlcnM7CglzdGQ6OmlzdHJpbmdzdHJlYW0gcmF3c3RyZWFtKHJhdyk7CglzdGQ6OnN0cmluZyBoZWFkZXI7Cgl3aGlsZSAoc3RkOjpnZXRsaW5lKHJhd3N0cmVhbSwgaGVhZGVyKSAmJiBoZWFkZXIgIT0gIlxyIikgewoJCXN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgaW5kZXggPSBoZWFkZXIuZmluZCgnOicpOwoJCWlmIChpbmRleCAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewoJCQloZWFkZXJzLmluc2VydChzdGQ6Om1ha2VfcGFpcigKCQkJCWJvb3N0OjphbGdvcml0aG06OnRvX2xvd2VyX2NvcHkoYm9vc3Q6OmFsZ29yaXRobTo6dHJpbV9jb3B5KGhlYWRlci5zdWJzdHIoMCwgaW5kZXgpKSksCgkJCQlib29zdDo6YWxnb3JpdGhtOjp0cmltX2NvcHkoaGVhZGVyLnN1YnN0cihpbmRleCArIDEpKQoJCQkpKTsKCQl9Cgl9CgogCWZvciAoYXV0byYga3YgOiBoZWFkZXJzKSB7CiAJCXN0ZDo6Y291dCA8PCBrdi5maXJzdCA8PCAiOiAiIDw8IGt2LnNlY29uZCA8PCBzdGQ6OmVuZGw7CiAJfQoKCXJldHVybiAwOwp9Cg==