gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:25 25 4
gpt4 key购买 nike

这似乎是一个非常小的问题,但我是 c++ 的新手,而且我发现这个小任务出奇地困难。我有一个名为 draw_text(const char* text) 的函数,它在我的 openGL 窗口中输出变量“text”。当我调用该函数时,让我们说 draw_text("example"),然后它将文本示例完美地绘制到我的 openGL 窗口中。但是,我一直在尝试为该函数提供输入“score:”+score。其中“score:”是一个字符串,如图所示打印,score是一个整数变量,包含游戏中的当前分数。我知道这个实现在 Java 中运行良好,但在 C++ 中它打印出随机文本,我在我的代码中找不到任何地方。例如当我第一次运行我的程序时,它会在应该打印“score:”+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+”

我已经尝试过“Score:”+(char)score,但这就像我第一次尝试时一样开始打印出随机文本,有谁知道为什么它打印出这个文本而不是我的输入。

我试过 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]);
}

最佳答案

理想情况下,如果您是 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:”字符串连接起来。

在对 this question 的回答中,还有几种方法可以将 int 转换为字符串。 .

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

关于c++ - 如何在C++中存储具有字符串和整数串联的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27496662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com