显示文本到windowsc++

Displaying Text to Window C++

本文关键字:windowsc++ 文本 显示      更新时间:2023-10-16

我试图在屏幕上显示一个小而非常基本的游戏得分。

我使用这个函数来显示单词Score::

void drawBitmapText(char *string, int score, float r, float g, float b, float x,float y,float z) {  
   char *c;
   glColor3f(r,g,b);
   glRasterPos3f(x,y,z);
   for (c=string; *c != ''; c++) { 
        glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, *c); }
}

我将上面的function()调用为:drawBitmapText("score: ",score,0,1,0,10,220,0);

它成功地显示了Score:这个词,并在正确的地方,但我遇到的问题是包括实际的int,代表它旁边的分数。

我如何纳入int显示太?我顺利通过了考试。

我试过将其转换为string/char并添加/连接它,但它只是显示随机字母…谢谢。

因为你正在使用c++,所以开始使用c++库来处理字符串会容易得多。您可以使用std::stringstream将标题和分数连接起来。

using namespace std;
void drawBitmapText(string caption, int score, float r, float g, float b, 
   float x,float y,float z) {  
   glColor3f(r,g,b);
   glRasterPos3f(x,y,z);
   stringstream strm;
   strm << caption << score;
   string text = strm.str();
   for(string::iterator it = text.begin(); it != text.end(); ++it) {
        glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, *it); 
   }
}

您可以使用snprintf创建一个格式化字符串,与使用printf将格式化字符串打印到控制台的方式相同。这里有一种重写方法:

void drawBitmapText(char *string, int score, float r, float g, float b, float x,float y,float z) {
    char buffer[64]; // Arbitrary limit of 63 characters
    snprintf(buffer, 64, "%s %d", string, score);
    glColor3f(r,g,b);
    glRasterPos3f(x,y,z);
    for (char* c = buffer; *c != ''; c++)
        glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, *c);
}

使用std::stringstream

例如

std::stringstream ss;
ss << "score: " << score;

then call

ss.str().c_str();

输出c字符串