c ++将字符串拆分为数组并将每个块保存为变量

时间:2013-07-04 13:43:21

标签: c++

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

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

2 个答案:

答案 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 ++的东西更快。