为什么String *不返回所有字符串?

时间:2018-12-11 15:47:00

标签: c++ string pointers c++98

以下代码是我在C ++ 98中项目的一部分,因此不允许使用向量等。现在,此功能的主要用途是使用给定的delimeter将单个字符串行分解为字符串数组,而size基本上就是我需要返回的单词数。问题是,当我调试并在最后检查nums时,它的大小更改为4,并且只返回了第一个单词,由每个字符填充。好像nums现在是{ {1}}我已经多次更改了代码,但是我没有出错的地方,有任何建议吗?

char*

1 个答案:

答案 0 :(得分:1)

由于您事先不知道string ss中的单词数,因此在调用size函数时不能指定Split。不知道size,您将无法为nums分配内存。

因此,最好使用vector个中的string个。如前所述,vector在C ++ 98中可用。

然后修改后的Split函数将如下所示:

vector<string> Split(string ss, char delimiter)
{
    vector<string> vs;
    int index_c, index_sw=0, j;

    for(j=0;j<ss.length();j++)
    {
        if (ss.at(j) == delimiter)
        {
            index_c = j;
            vs.push_back(ss.substr(index_sw, index_c - index_sw));                
            index_sw = index_c + 1;
        }
    }
    vs.push_back(ss.substr(index_sw, j - index_sw));        
    return vs;
}

然后可以这样称呼:

vector<string> ret = Split("This is a stackoverflow answer", ' ');

请参见演示here