繁体   English   中英

如何在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窗口中。 但是,我一直在尝试为函数输入“分数:” +分数。 其中“ 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 +'

我已经尝试过“分数:” +(字符)分数,但是这就像我的第一次尝试一样开始打印出随机文本,有人知道为什么它会打印出此文本而不是我的输入。

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

理想情况下,如果您使用的是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转换为字符串的方法。

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

如果您有C ++ 11编译器,则可以尝试std :: to_string

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM