gpt4 book ai didi

c++ - 在C++更改N个字符的字符串中每N个字符插入一个字符

转载 作者:太空狗 更新时间:2023-10-29 20:23:40 24 4
gpt4 key购买 nike

我正在尝试使用:

std::string tokenize(const std::string& s) {
if (!s.size()) {
return "";
}
std::stringstream ss;
ss << s[0];
for (int i = 1; i < s.size(); i++) { // tried i++ ----> i+=16
ss << '|' << s[i];
}
return ss.str();
}

来自 ( How to insert a character every N characters in a string in C++ ) 但将 "|" 从每一个字符插入到每 16 个字符插入。

我尝试更改 i++ ----> i+=16 但失败并使 "sqdfqdfqwerqwer" 成为 "s |q"

有人能找出我的错误吗?

最佳答案

 for (int i = 1; i < s.size(); i+=16) { // tried i++ ----> i+=16

ss << '|' << s[i];
}

首先:

but that fails and makes "sqdfqdfqwerqwer" become "s|q"

您直接从给定字符串的第 1 个位置 (i=1) 跳到第 16 个位置 (i+=16)。即当循环第二次运行时在 1+16 位置。

所以 ss 正在获取字符串 s[0],s[i],s[i+16],s[2i+16]...这就是为什么您要精简字符串 s 的原因。

解决方案上面已经回答了,很简单

for (int i = 1; i < s.size(); i++) {
if (i%16==0) ss << '|'; <<-- this is the main concept you are missing
ss << s[i];
}
  • 我们遍历字符串的所有字符

  • 检查我们是否处于所需位置。有关模运算符如何工作的更多信息。

  • 如果我们得到所需的职位,就做您想做的事。

现在当我通过

DoesThisAnswerYourQuestion?ImGladItDid.IfNotITriedMybest:D

打印出来

DoesThisAnswerYo|urQuestion?ImGla|dItDid.IfNotITri|edMybest:D

关于c++ - 在C++更改N个字符的字符串中每N个字符插入一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31888765/

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