2012-03-20 3 views
-1

内のベクトルからデータを取得できませんすべてOKです含ん)私は状況を説明してみましょう、別のベクトル

vector<cAnimation> animation; 

animation.resize(1); 
animation[0].setQntFrames(10);   // it's printing the right value on qntframes.txt 
animation[0].setFrame(0,10,10,200,200) // it's printing the right values on setrect.txt 

SDL_Rect temp = animation[0].getFrame(0);// here is the problem 

ofstream log("square.txt"); 
log << "x = " << temp.x 
    << "y = " << temp.y; 

私はsquare.txtログに見ると、正方形のようないくつかの奇妙な文字が表示され、私はSDL_Rectの一時のデデータを使用しようとすると、アプリケーションはちょうど私がやっている、終了ここに間違っている値?

+3

コードを単純なテストケースに減らす方法とその理由を確認するには、http://sscce.orgを参照してください。 –

答えて

-1

あなたはおそらく文字を出力しています。これらをostreamに出力すると、ASCII文字の数値ではなくASCII文字が得られます。これを試してください:

log << "x = " << (int) temp.x 
    << "y = " << (int) temp.y; 

「char」は、1バイト整数の短い手としてよく使用されます。ストリームに出力するときに、1バイト整数ではなくASCII文字として出力しようとする点を除いて、これらはうまくいきます。文字を真の整数にキャストすると、通常は問題が解決されます。

+0

ファイルに同じ奇妙な文字を保存していますが、これは間違ったメモリアクセスになりますか? –

+2

SDL_Rectコンポーネントはchar型ではありません。 Sint16は、ほとんどのシステムで 'short'の単なるtypedefです。 –

+0

私はメソッドに同じ "モード"を使用してデータを保存しています。ちょうどそこにテンポラリベクトルフレームのデータが保存されていません。また、テンポを使用しようとすると同じ終了時に終了が終了します。何かをしなさい。 –

関連する問題