2017-08-21 14 views
0

私はを使ってみましたが、それを修正するたびに結果を見るために出力に出力したい2次元配列を持っています。もし私がCCLOGを使用すると、その関数はそれが呼び出されるたびに自動的に改行を書くでしょう.2次元配列のかなりの解決策ではありません。CClogCCLOGとの違いはわかりませんが、今回はコンパイルエラーです。 (2次元配列をcocos2dxで印刷する方法

私は出力が可能たいよう:

1,2,4,4,5 
5,5,4,3,0 
4,4,4,4,7 
6,6,6,6,6 
ここで

は、私が試したものです:

void HelloWorld::PrintBrickArray() { 
    CCLOG("will print brick array"); 
    std::cout << "===Begin of Array ====" << std::endl; 
    for (int i = 0; i < MATRIX_Y; i++) { 
     for (int j = 0; j < MATRIX_X; j++) { 
      //CCLog("%d", this->brickArray[i][j]); 
      std::cout << this->brickArray[i][j] << ' '; 
     } 
     std::cout << std::endl; 
    } 
    std::cout << "*****END OF Array *****" << std::endl; 
    std::cout.flush(); 
} 

coco2dxでそれを行うには?

答えて

1

CCLOGまたはcocos2d::logは、Visual Studioのデバッグウィンドウを使用します。これは、コンソールに書き込む場合と異なり、std::coutが機能します。

したがって、あなたの問題を取り除くために2つの方法があります。std::coutを使用してコンソールへの書き込みやとは異なる方法を使用して、出力ウィンドウに書き込むCCLOG

まず選択、あなたは、Win32アプリケーションプロジェクトから、プロジェクトの種類を変更する必要がありますWin32コンソールプロジェクトに追加します。これはVisual Studioのものでやり遂げられることですが、ほとんどの場合、プロジェクトはcocos2dのコンソールを介して自動的に作成されます。 this postが表示されます。私はこのようにIMOはお勧めしません。

第2の選択肢は、hereについて説明した出力に独自のコードを書き込むことです。

そこには、コードをラップ少しはそれを作るためにであるあなただけCCLOG

CCLOGを介して出力ウィンドウに、あなたの文字列を印刷し、その後バッファするstd::stringstd::ostringstreamに「印刷」あなたの変数を使用し、できる別の方法です実行時に通常発生するリソースチェック、エラー、ファイル処理などを記録する便利な機能です。そのような場合でなければ、代わりに値が何であるかを見るためにブレークポイントを設定するべきでしょう。

編集:あなたが第二のアプローチを選んだので、私はsprintfよりstd::ostringstreamを使用して、(あなたはそれをプリントアウトしているため、独立したOS 、不要余分な引数 OutputDebugStringの代わりにCCLogを使用して

推薦ここで

は、サンプルコードです:

#include <vector> 
#include <sstream> // for ostringstream 
#include <Windows.h> // for OutputDebugStringA 
using namespace std; 

int main(void) 
{ 
    // Assuming that you have this 2d array 
    vector< vector<int> > arr2d; 
    arr2d.push_back({ 2,2,1,4 }); 
    arr2d.push_back({ 2,4,1,5 }); 
    arr2d.push_back({ 2,4,7,2 }); 
    arr2d.push_back({ 3,2,0,1 }); 

    ostringstream buffer; 
    for (int i = 0; i < arr2d.size(); i++) 
    { 
     for (int j = 0; j < arr2d[i].size(); j++) 
     { 
      buffer << arr2d[i][j] << '\t'; 
     } 
     buffer << endl; 
    } 

    // Assuming that you use OutputDebugString for windows-only 
    //OutputDebugStringA(buffer.str().c_str()); 

    // I recommend this 
    cocos2d::log(buffer.str().c_str()); 

    return 0; 
} 

さて、bufferはほぼcoutと同じように動作し、それだけで「印刷」は、その後、代わりにバッファリングしますstr()を使って1つを得ることができます。しかし、Cスタイルの文字列cocos2d::log使用は、そうc_str()

std::ostringstreamhere

+0

についての詳細を参照してください問題を取り除くだろうねえ、私は、あなたが与える2番目の選択肢を実装するために、 'sprintf'と'文字列+ 'を使用しようとしましたしかし、どれも右から出てきませんでした。より具体的な例を教えてください。本当にC++の初心者です。 – armnotstrong

+0

@armnotstrong私は答えを編集しました –

関連する問題