字符串的分辨率/大小

时间:2013-05-13 20:55:12

标签: c++

我正在尝试编写一个迷你程序,它基本上采用字符串向量(来自用户输入)并显示或打印出增加的&降低了它的分辨率(大小)。

它会将每个字符串的每个字符增加或减少4。 示例:如果字符串为“abcdef”,则增加的分辨率为“aaaabbbbccccddddeeeeffff”

我在编写代码时遇到了麻烦。我不希望它不仅循环遍历字符串向量,而且我希望它读取向量中每个字符串的字符并产生分辨率结果。

有没有这样做?我一直从编译器中获得这些转换错误

void asci_art::bigresol(vector<string>art)
{
   cout << "Increased Resolution of your artwork" <<endl;

   for (int i = 0; i < art.size(); i++)
   {
      for(int j = 0; j < art[i].size(); j++)
       {
          cout << art[j] + art[j] + art[j] + art[j] << endl;
        }
     }
   }

btw我在课堂上写了这个函数。

在这种情况下,我正在编写一个提高分辨率的函数。我认为降低分辨率的想法是一样的。

2 个答案:

答案 0 :(得分:2)

您将串联字符串而不是连接字符。从每个字符而不是每个字符串形成所需的字符串:

std::cout << std::string(4, art[i][j]); //put the newline in the outer loop

您还应该考虑将参数设置为const std::vector<std::string> &,以避免在调用函数时出现不必要的副本。还要考虑使用C ++ 11中引入的很好的range-for语法:

for (const auto &str : art) {
    for (auto c : str) {
        std::cout <<  std::string(4, c);
    }

    std::cout << '\n'; //put a newline in between each transformed string
}

答案 1 :(得分:1)

哎呀 - 我误解了。

我认为这就是你想要的风格:

void asci_art::bigresol(vector<string> art)
{
    cout << "Increased Resolution of your artwork" << endl;

    for (int i = 0; i < art.size(); i++)
    {
        line = art[i]
        for(int j = 0; j < line.size(); j++)
        {
            for(int k=0; k<4; k++)
                cout << line[j];
        }
        cout << endl;
    }
}