将 "ascii art" printf 放入 char 数组?

putting an "ascii art" printf into a char array ?

我有这个对象

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

为了让我从中创建一个数组,我必须遍历每一行并在任何内容之间放置一个 ,'',,当我使用的实际名称更大时,它是将永远花费并且容易出现人为错误。

我将如何创建一个函数来为我完成这一切而不会出错,并且根据 "logo".

的大小可能有不同的数组大小选项

我会把每行存储到一个字符串中吗:

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

因为这些似乎是我遥不可及的唯一方法,但即便如此我还是不明白我将如何去做。

您可以使用 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;
}