我正在尝试编写一个函数,它可以接受一个字符串,并将每X个字符分割一次:
例如,如果我调用
然而,它只似乎获得了前两个结果(向量大小为2),当我尝试使用
std::vector<std::string> DIFSplitStringByNumber(std::string s, int l)
{
const char *c = s.c_str();
char buffer[l];
std::vector<std::string> entries;
entries.reserve(int(s.length() / l) + 1);
int d = 0;
for(int i = 0; i < s.length() - 1;)
{
if(d != l)
{
buffer[d] = c[i];
d++;
i++;
}
else
{
entries.push_back(std::string(buffer, l));
//Clear array
memset(buffer, 0, l);
d = 0;
}
}
return entries;
}
例如,如果我调用
DIFSplitStringByNumber("hello!", 2)
,我应该得到一个包含以下内容的向量:[0] he
[1] ll
[2] o!
然而,它只似乎获得了前两个结果(向量大小为2),当我尝试使用
DIFSplitStringByNumber("hello", 2)
等方式时,它会崩溃,可能是因为它试图访问不存在的数组索引(它期望有6个字符,但实际上只有5个)。有没有更简单的方法来做到这一点?
char buffer[l]
)? - barak manos