c++ - 你如何将带有字符串变量的字符串传递给C++中的函数

标签 c++ c sdl

我有一个带有默认参数的函数,可以在屏幕上显示文本。像这样:

DrawScreenString(int, int, string, int uicolor, font);

然而,我正在尝试像这样传递一个字符串变量“livesRemaining”:

DrawScreenString(10, 5, "Lives  : %d ",livesRemaining, 0xF14040, NULL);
livesRemaining = 3

因此,由于该函数仅接受 5 个参数,因此无法编译,因为该函数认为我正在尝试传递第 6 个参数,而不知道我正在尝试将字符串添加到已经存在的字符串“生命:”

这就是我想要的结果:

Live   : 3

我知道这不是正确的做法,我该怎么做? 非常感谢!!

最佳答案

如果您使用的是支持 c++11 的编译器,您可以使用 chris 提到的 to_string 方法 ( http://www.cplusplus.com/reference/string/to_string/?kw=to_string )

DrawScreenString(1,5, "Lives Remaining: " + std::to_string(livesRemaining), 0xF00000, NULL).

但是,如果您的编译器没有 to_string 功能,您可以使用 stringstream 将 ( http://www.cplusplus.com/reference/sstream/stringstream/stringstream/ ) 或 sprintf 构造到 char 缓冲区中,然后从 char 缓冲区构造字符串。我个人不喜欢 sprintf 选项,因为固定缓冲区和如果不检查输入会担心缓冲区溢出,但它是一个选项。

编辑:根据 OP 请求添加字符串流的示例:

#include <sstream>
...
std::stringstream ss;
int livesRemaining = 5;
ss << "Lives remaining: " << livesRemaining;
DrawScreenString(1,5, ss.str(), 0xF00000, NULL);

关于c++ - 你如何将带有字符串变量的字符串传递给C++中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22976834/

相关文章:

c# - Mapnik.NET 图层数据源路径

python - 在 python 3.x 的 for 循环中,对象是否更改为不可变的?

c++ - Makefile 只重新编译更改的对象?

有人可以告诉我这有什么问题吗?

c++ - SDL C++ 帧率计数器?

c++ - 从函数返回一个分配的指针,它会导致内存泄漏吗?

c - c中(0,1)的随机数

c - 拦截Linux上的文件操作

c - 在 C 程序中链接 SDL

c++ - SDL 表面像素格式转换