У меня есть этот объект
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
поскольку это кажется единственным способом, которым я могу мыслить удаленно, но даже не понимаю, как бы я поступил так.
Ты можешь использовать 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;
}
Других решений пока нет …