gpt4 book ai didi

C++ 拆分字符串每 X 个字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:12 24 4
gpt4 key购买 nike

我正在尝试编写一个函数,它接受一个字符串,并拆分每 X 个字符:

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),我应该得到一个 vector ,其中包含:

[0] he
[1] ll
[2] o!

但是,它似乎只得到前两个结果( vector 大小为 2),当我执行类似 DIFSplitStringByNumber("hello", 2) 的操作时,它崩溃了,大概是因为它试图访问一个不存在的数组索引(它需要 6 个字符,但只有 5 个)。有更简单的方法吗?

最佳答案

算法的核心真正归结为以下两行。

for (size_t i = 0; i < s.size(); i += l)
res.push_back(s.substr(i, l));

此外,您应该通过 const 引用传递字符串。

关于C++ 拆分字符串每 X 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25022880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com