我尝试创建一个循环并使用append函数。 例如:
org.openqa.selenium.WebDriverException: f.QueryInterface is not a function
例如,如果我想要打印
string a = "hey";
for (int i = 0; i < 3; i++)
{
cout << a << endl;
a += a;
}
那么这种方法就会失败。
但如果我想打印出来
heyheyhey
heyhey
hey
那么这个方法就行了;因为append函数根据循环迭代的次数将字符串添加到结尾。是否有可能按照我尝试的方式解决这个问题?或者有没有办法递归交换底部解决方案以获得最佳解决方案?我一直在学习字符串,我希望能用字符串函数解决这个问题。
答案 0 :(得分:1)
将cout
放在for
循环中。请注意如何处理条件和增量。
答案 1 :(得分:1)
有两种方法:
对于大字符串,您需要以&#34; heyheyhey&#34;开头。并打印字符串,然后删除&#34;嘿&#34;在每个循环中。它与连接相反。
另一种方法是使用嵌套循环:
for (unsigned int line = 0; line < 3; ++line)
{
for (unsigned int copies_per_line = 0; copies_per_line < (3 - line); ++copies_per_line)
{
cout << "hey";
}
cout << "\n";
}
答案 2 :(得分:0)
string a = "hey";
for(int i = 3; i > 0; i--)
{
for(int j = i; j > 0; j--)
cout << a;
cout << endl;
}
答案 3 :(得分:0)
您可以创建可以打印文本X次的aditional函数:
void printCount(string text, int count)
{
for(int now = 0; now < count; now++)
printf(text);
}
然后你可以创建一个显示你的文字的主循环:
for(int now = 0; now < 3; now++)
printCount("hey", now + 1);
现在+ 1表示在周期0中我们需要打印1 msg,在周期1 - 2和更多
根据您的情况:
for(int now = 3; now > 0; now--)
printCount("hey", now);
编辑: 你也可以使用cout:
void printCount(string text, int count)
{
for(int now = 0; now < count; now++)
cout << text;
cout << endln;
}
答案 4 :(得分:0)
顺便说一下,即使是第二种情况,你的方法也会失败。它不会打印
hey
heyday
heyheyhey
但
hey
heyhey
heyheyheyhey
因为字符串在每次迭代中总是加倍。
正如其他答案所述,你可以简单地使用一个额外的内循环。
答案 5 :(得分:0)
遗憾的是,这并不像看起来那么微不足道。我看到两种可能的解决方案:第一次将输出存储在循环中并在第二次循环中打印,或者第一次创建a
并在第二次循环中创建输出。无论哪种方式,我都无法在一个循环中看到如何做到这一点。
由于将字符串复制到数组中有点烦人,所以这是第二种解决方案。
string a = "hey";
for (int i = 0; i < 3; i++)
a += a;
for (int j = 0; j < 3; j++) {
int copyLength = (3 - j) * "hey".length();
cout << a.substr(0, copyLength) << endl;
}
注意:我强烈考虑在这里3
const
或至少一个变量。上述代码中3
的所有实例都应该一起更改。
答案 6 :(得分:0)
目前尚不清楚你对自己有什么任意限制,但输出可以通过多种方式获得。这是一个递归解决方案:
std::string repeat(std::string str, int rpt)
{
return (rpt > 1) ? str + repeat(str, rpt - 1) : str;
}
int main()
{
for (int i = 3; i > 0; i--)
{
std::string a = repeat( "hey", i);
std::cout << a << std::endl;
}
return 0;
}