所以有一個像remixsettings_bits=1; wysiwyg=1,2,3,abc; remixclosed_tabs=0; remixgroup_closed_tabs=786432; remixlang=0; remixchk=5; remixsid=35d4f9907281708019490d07728c27ca5c10e5de7a869c322222225e3219e; audio_vol=100
這樣的字符串我想知道如何使用boost :: spirit解析tham到地圖name
< - >value
並且能夠使用boost :: spirit將其寫回來?Boost精神:如何解析字符串值對映射到<string,string>和返回?
更新: 所以我做了什麼:
#include <iostream>
#include <sstream>
#include <string>
#include <map>
//...
std::map<std::string, std::string> user_control::parse_cookie(std::string cookie_data)
{
std::map<std::string, std::string> parsed_cookie;
std::string token, token2;
std::istringstream iss(cookie_data);
while (getline(iss, token, ' '))
{
std::string name, val;
std::istringstream iss2(token);
int num = 0 ;
while (getline(iss2, token2, '='))
{
if (num == 0)
{
name = token2;
num++;
}
else
{
val = token2;
std::string::iterator it = val.end() - 1;
if (*it == ';')
val.erase(it);
}
}
std::cout << "name: " << name << " value: " << val << std::endl;
parsed_cookie.insert(std::pair<std::string, std::string>(name, val));
}
return parsed_cookie;
}
,但我真的不知道如何端口我的代碼到的boost ::精神的代碼。
而你想在精神上重寫它,爲什麼?因爲你喜歡長編譯時間? –