0

我正在学习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]

真的不知道我应该寻找什么才能让这个工作?

4

2 回答 2

2

你在正确的轨道上,你只是没有正确的容器

在我的评论中继续使用其中一个容器的解决方案:

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);
于 2013-07-04T13:51:36.687 回答
0

您可以使用它sscanf()来解析您需要的令牌。作为奖励,它比 C++ 的东西快。

于 2013-07-04T13:46:34.203 回答