将“ascii art”printf放入char数组中?

时间:2016-03-19 05:35:41

标签: c++ ascii-art

我有这个对象

void Game::Logo(void)
{
    printf("                 _ _ \n");
    printf("                (_|_)\n");
    printf("   __ _ ___  ___ _ _ \n");
    printf("  / _` / __|/ __| | |\n");
    printf(" | (_| \__ \ (__| | |\n");
    printf("  \__,_|___/\___|_|_|\n");
    printf("                     \n");
    printf("\n");
}

为了让我能够创建一个数组,我必须遍历每一行并在任何东西之间放置一个,'',,当我正在使用的实际名称要大得多时,它将会永远,容易出现人为错误。

如何创建一个可以在没有错误的情况下为我完成所有操作的函数,并根据“徽标”的大小为数组大小提供不同的选项。

我会将每条线存储到一个字符串中:

string row0 = "                 _ _ ";
string row1 = "                (_|_)";
string row2 = "   __ _ ___  ___ _ _ ";
string row3 = "  / _` / __|/ __| | |";
string row4 = " | (_| \__ \ (__| | |";
string row5 = "  \__,_|___/\___|_|_|";
string row6 = "                     ";

然后创建这种函数:

printfToArray(int numRow,int numCol, string rows)
{
    for (int i = 0; i < numRow; i++)
    {
        //create an array of char logo[numRow][numCol]
        //numCol is the number of max space require, so this case, 23 because of \n as well
        //then copy it somehow into the array within loop
    }
}

int numRow = 7; //because 7 strings

因为这些似乎是我能够远程思考的唯一方式,但即便如此,我也不明白我将如何做到这一点。

1 个答案:

答案 0 :(得分:5)

您可以使用std::vector将行放入数组

#include <iostream>
#include <string>
#include <vector>

int main()
{
    std::vector<std::string> vs
    {
        R"(                 _ _ )",
        R"(                (_|_))",
        R"(   __ _ ___  ___ _ _ )",
        R"(  / _` / __|/ __| | |)",
        R"( | (_| \__ \ (__| | |)",
        R"(  \__,_|___/\___|_|_|)",
        R"(                     )"
    };

    for (auto s : vs)
        std::cout << s << "\n";

    return 0;
}