如何在c ++中存储带有字符串和整数串联的变量

how to store a variable with a concatenation of a string and an integer in c++

这似乎是一个非常小的问题,但我对c ++很新,我发现这个小任务非常困难。我有一个名为draw_text(const char * text)的函数,它在我的openGL窗口中输出变量"text"。当我打开函数时,让我们说draw_text("example"),然后它将文本示例完美地绘制到我的openGL窗口中。但是,我一直试图给功能输入"得分:"+得分。其中"得分:"是一个字符串,如图所示打印,得分是包含游戏当前得分的整数变量。我知道这个实现在java中运行正常,但在c ++中它打印出随机文本,我在代码中找不到任何地方。例如当我第一次运行我的程序时,它会在"score:"+得分打印的位置打印出"r_text.png",然后文本不断变换为另一个随机单词。

我找到了几种将整数转换为字符串的方法,但是我找不到对我的情况有用的方法。我已经尝试了几种流方法,但它们只在控制台中打印出文本,它们无法帮助存储带有串联串的变量。

我尝试过使用sprintf()方法

1
2
3
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()方法

1
2
3
char str[21];
strcpy (str,"Score:");
strcat (str,(char)score);

但这会在我的控制台中出现一个错误,指出从'char'到'const char *'的无效转换

在我的C ++版本中无法识别方法string()和to_string,即使我已经包含了库。

是否有一种非常简单的方法可以在C ++中执行此操作,我无法在任何地方找到它,或者尝试执行最简单任务之一的语言是否令人沮丧。

我的draw_text()方法如下

1
2
3
4
5
6
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]);
}


理想情况下,如果您使用的是C ++ 11,则可以使用std :: to_string,它可以立即解决您的问题。

但是,您也可以使用stringstreams将值转换为字符串:

1
2
3
4
5
6
7
8
#include <sstream>

const std:string ConvertIntToString(const int input_int)
{
  std::stringstream ss;
  ss << input;
  return ss.str();
}

然后,您应该能够将其与"Score:"字符串连接起来。

在回答这个问题时,还有几种方法可以将int转换为字符串。

编辑:在注释中回答您的问题,您可以通过调用string :: c_str()将字符串转换为const char *。


如果你有一个C ++ 11编译器,你可以尝试std :: to_string。

1
std::string result ="Score:" + std::to_string (score);