我正在学习c ++,请温柔。经过Ruby太久,我很难找到自己的脚。
基本上,我正在尝试获取http响应,将其拆分,然后将各个部分保存为变量。
我正在使用happyhttp而不是curl,因为它更小,我们不能像其他SO帖子那样使用boost。
我们得到的回应如下:
Nzov1td_xs4MNlnTd5sU:60:60:websocket,htmlfile,xhr-polling,jsonp-polling
我尝试过使用stringstream然后使用getline,但显然只输出了这些行:
stringstream os;
os << data;
string s = os.str();
std::string segment;
while(getline(os, segment, ':'))
{
cout << segment;
}
我需要这样的东西(我知道语法错误):
socketID = segment[0]
timeout = segment[1]
heartbeat = segment[3]
真的不知道我应该寻找什么让这个工作?
答案 0 :(得分:2)
你走在正确的轨道上,你没有得到正确的container。
在我的评论中继续使用其中一个容器的解决方案:
std::array<std::string, 4> segments;
int i = 0;
while (std::getline(os, segment, ':'))
segments[i++] = segment;
如果您没有std::array
,则基于std::vector
的解决方案:
std::vector<std::string> segments;
while (std::getline(os, segment, ':'))
segments.push_back(segment);
答案 1 :(得分:0)
您可以使用sscanf()
来解析所需的令牌。作为奖励,它比C ++的东西更快。