помещая «искусство ascii» printf в массив символов?

У меня есть этот объект

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

поскольку это кажется единственным способом, которым я могу мыслить удаленно, но даже не понимаю, как бы я поступил так.

0

Решение

Ты можешь использовать 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;
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]