是否可以打印出与循环计数器对应的字符串

时间:2015-12-16 19:15:47

标签: c++ string

我尝试创建一个循环并使用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函数根据循环迭代的次数将字符串添加到结尾。是否有可能按照我尝试的方式解决这个问题?或者有没有办法递归交换底部解决方案以获得最佳解决方案?我一直在学习字符串,我希望能用字符串函数解决这个问题。

7 个答案:

答案 0 :(得分:1)

cout放在for循环中。请注意如何处理条件和增量。

答案 1 :(得分:1)

有两种方法:

  1. 从大字符串开始,擦除片段
  2. 使用嵌套循环
  3. 对于大字符串,您需要以&#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;
}