0

次のコードを使用して SDL 画面に印刷しています。

SDL_GL_RenderText(  timer, font, color, &position);
sprintf(timer," Time : %d",time);

私はC++でプロジェクトを行っており、sprintfCスタイルの関数であるため、sprintfを使用することは想定されていないため、使用しようとしていますostringstreamが、使用方法がわかりません。

誰かが同等の c++ スタイルを投稿します (ostringstream または同等のものを使用)。

4

1 に答える 1

2

ドキュメントまたは例で見つけることができるコードの例..

#include <sstream>

std::ostringstream str;
str << "Time: " << time;

// get the std::string
str.str();
// get the C char*
str.str().c_str();

// reset the string stream
str.str("Initial value");

したがって、C char 配列を使用する場合

const char* text = str.str().c_str();
SDL_GL_RenderText(text, font, color, &position);

これを実現する別の方法は、SDL_GL_RenderText の呼び出しをカスタムのstd::strbufandstd::ostreamでラップすることです。これにより、次のようなことが可能になります:

gl_out << font << color << position << "Timer :" << time << std::flush;

フォントによると、色と位置には実際の型があり、void* や単に int のようなものではありません。その場合は、カスタム タイプでラップできます。

この方法は少し複雑で、標準 C++ ライブラリのストリーム管理をよく理解している必要がありますが、IMO の方がはるかに洗練されています。OpenGL でこれを試したことはありませんが、syslog (ログ レベル指定あり) やその他のテキスト出力メディアで動作しました。

于 2013-03-05T16:21:22.350 に答える