2016-03-19 12 views
0

私は私はこのうち配列を作成するためには、このオブジェクト"ascii art" printfをchar配列に配置していますか?

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を使用することができ、[この](http://www.asciiarts.net/)? – SCaffrey

+0

@SCaffreyいいえ、私はそれの中にすべてのprintfを含む複数の次元配列を作成することを意味しました。 – Robolisk

+0

エスケープコードに問題がある場合(どこでも '\\'をタイプする必要があります)、生の文字列リテラルを使用してください。 – 3442

答えて

5

あなたが必要としている配列

#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; 
} 
+0

これを今すぐ試してみよう – Robolisk

+1

データ内の改行(および先頭の空白と空白行)を省略して、同じ出力行にある他のASCIIアートと組み合わせる方がよいでしょう。代わりに、出力操作に改行を含めます。しかし、文字列のベクトルは間違いなく正しい方法です。 –

+0

これは正しく動作しません。生の文字列リテラルを使用しない限り(またはどこでも '\\'をタイプする)、あなたは '\ _'エスケープシーケンスを作成しています... **編集**:これを考慮して投稿を編集しました。 – 3442

関連する問題