走过来,
ss << s[0];
第一个字符进入输出流
for (int i = 1
从1开始。
i < s.size();
直到达到或超过字符串的末尾。
i++)
查看数组中的每个元素
ss << '|' << s[i];
我会尽力为您进行翻译。这段内容与编程有关,意思是将一个 | 和当前字符放入输出流中。
对于字符串 "ABC",循环展开如下:
ss << A; //ss << s[0];
ss << | << B; //ss << '|' << s[1];
ss << | << C; //ss << '|' << s[2];
流内容为A|B|C
for (int i = 1
意思是查看字符串中的第二个元素以及每隔16个元素。换句话说,s[1]、s[17]、s[33]、s[49]...
因此,对于"sqdfqdfqwerqwer",您展开为:
ss << s; //ss << s[0];
ss << | << q; //ss << '|' << s[1];
这个字符串只有15个字符,所以没有第17个字符可查看。输出结果为:
s|q
就像楼主所指出的一样。
好的。上次搞砸了,所以重新来过。可以通过连接字符串来完成,但是stringstream可能是更快的选择。不过,我需要进行性能测试来证明这一点。我还对代码进行了快速调整,允许调用者指定长度。这对于测试很有用,因此我保留了它。
std::string tokenize(const std::string& s,
size_t where)
{
if (s.size() > 0)
{
std::stringstream temp;
temp << s.substr(0,where);
for (size_t loc = where; loc < s.size(); loc+=where)
{
temp << '|' << s.substr(loc,where);
}
return temp.str();
}
return "";
}
结果:
In = "I'm the very model of a modern major general"
Out = "I'm the very mod|el of a modern m|ajor general"
for
循环的新手吗? - Drew Dormann