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