Advertisement
Guest User

Untitled

a guest
Feb 4th, 2014
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. void split_string(std::vector<std::string>* container, const char* data, const char* delim, size_t data_length, size_t delim_length) {
  2.     std::string buffer;
  3.  
  4.     while (*data) {
  5.         if (memcmp(data, delim, delim_length) == 0) {
  6.             if (buffer.empty() == false) {
  7.                 container->push_back(buffer);
  8.                 buffer.clear();
  9.             }
  10.             size_t temp = delim_length;
  11.             while (temp-- && *data++);
  12.         } else {
  13.             buffer += *data++;
  14.         }
  15.     }
  16.  
  17.     if (buffer.empty() == false) {
  18.         container->push_back(buffer);
  19.     }
  20. }
  21.  
  22. void parse_http_request(std::string* head, std::map<std::string,std::string>* args, const char* request, size_t request_len) {
  23.     std::vector<std::string> lines;
  24.     std::vector<std::string> buffer;
  25.  
  26.     split_string(&lines, request, "\r\n", request_len, 2);
  27.  
  28.     head->assign(lines[0]);
  29.     lines.erase(lines.begin(), lines.begin()+1);
  30.  
  31.     for (std::vector<std::string>::iterator itr = lines.begin(); itr != lines.end(); itr++) {
  32.         buffer.clear();
  33.         split_string(&buffer, itr->c_str(), ": ", itr->size(), 2);
  34.         args->insert(std::make_pair(buffer[0],buffer[1]));
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement