首页 文章

如何在c中存储一个字符串和一个整数的串联变量

提问于
浏览
1

这似乎是一个非常小的问题,但我对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'

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

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

2 回答

  • 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 * .

  • 0

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

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

相关问题