我试图在openGL中为游戏制作得分。对于我使用的文字:
void draw_text(const char* text)
{
size_t len = strlen(text);
for (size_t i=0;i<len;i++)
{
glutStrokeCharacter(GLUT_STROKE_ROMAN, text[i]);
}
}
如果我传入这样的文字:
const char* score_text = "Score:";
它在屏幕上正确显示,但我想要一个可变数字得分,所以我将int转换为const char *,如下所示:
// converts int to string
const char* int_to_string(int i)
{
std::ostringstream str1;
str1 << i;
std::string temp = str1.str();
return temp.c_str();
}
我尝试过to_string,而我所使用的系统有一个阻止它工作的错误(它是一个标记的部分,所以它必须在提供的系统上运行)所以我使用上面的方法。 / p>
现在如果我将数字传递给draw_text:
draw_text(int_to_string(180));
它将打印出第一个字符,但其余部分似乎已损坏,因此它们不会出现或显示为不同的字符。例如&#34; 1K&#34;或&#34; 1cp&#34;
我似乎无法从快速谷歌中找到原因,但是我发现如果我将它发送到cout后将其发送到coutkeCharacter然后将endl发送到cout然后数字将正确显示。如果我这样做但省略了endl,则仍然会发生损坏并将其打印到终端,因为它已损坏。