这似乎是一个非常小的问题,但我对c ++很新,我发现这个小任务非常困难。我有一个名为draw_text(const char * text)的函数,它在我的openGL窗口中输出变量“text”。当我打开函数时,让我们说draw_text(“example”),然后它将文本示例完美地绘制到我的openGL窗口中。但是,我一直试图给功能输入“得分:”+得分。其中“得分:”是一个字符串,如图所示打印,得分是包含游戏当前得分的整数变量。我知道这个实现在java中运行正常,但在c ++中它打印出随机文本,我在代码中找不到任何地方。例如当我第一次运行我的程序时,它会在“score:”+得分打印的位置打印出“r_text.png”,然后文本不断变换为另一个随机单词。
我找到了几种将整数转换为字符串的方法,但是我找不到对我的情况有用的方法。我已经尝试了几种流方法,但它们只在控制台中打印出文本,它们无法帮助存储带有串联串的变量。
我尝试过使用sprintf()方法
char stringResult[21]; // enough to hold all numbers up to 64-bits
sprintf(stringResult, "%d", score);
std::string result = "Score: " + stringResult;
但它给编译时错误说明类型'const char [8]'和'char [21]'的无效操作数到二进制'perator +'
我尝试过“得分:”+(字符)得分,但这开始打印随机文本就像我的第一次尝试一样,是否有人知道为什么打印出这个文本而不是我的输入。
我尝试了itoa()方法,但在c ++中无法识别
我尝试过使用strcat()方法
char str[21];
strcpy (str,"Score: ");
strcat (str,(char)score);
但这会在我的控制台中出现一个错误,指出从'char'到'const char *'
的无效转换我的C ++版本无法识别方法string()和to_string,即使我已经包含了库。
在C ++中是否有一种非常简单的方法可以在任何地方找不到,或者尝试执行最简单任务之一的语言是否令人沮丧。
我对draw_text()的方法在下面给出
void CTetrisGame::draw_text(const char* text)
{
size_t len = strlen(text);
for (size_t i=0;i<len;i++)
glutStrokeCharacter(GLUT_STROKE_ROMAN, text[i]);
}
答案 0 :(得分:1)
理想情况下,如果您是using C++11,则可以使用std::to_string,这可以立即解决您的问题。
但是,您也可以使用stringstreams将值转换为字符串:
#include <sstream>
const std:string ConvertIntToString(const int input_int)
{
std::stringstream ss;
ss << input;
return ss.str();
}
然后你应该能够将它与你的“Score:”字符串连接起来。
还有几种方法可以将int转换为字符串,以回答this question。
编辑:在回答评论中的问题时,您可以通过调用string::c_str()将字符串转换为const char *。
答案 1 :(得分:0)
如果您有C ++ 11编译器,可以尝试std::to_string。
std::string result = "Score: " + std::to_string (score);