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

时间:2014-04-10 01:07:22

标签: 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

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

2 个答案:

答案 0 :(得分:1)

如果您使用的是支持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);

答案 1 :(得分:0)

你可以附加你的字符串&#34;生活:&#34;生活中的剩余变量如下:

"Lives  : %d :"+Integer.toString(uicolor)

OR

"Lives  : %d :"+uicolor + ""

OR

"Lives  : %d :"+String.valueOf(uicolor)

最后,看起来像这样:

DrawScreenString(10, 5,"Lives  : %d :"+Integer.toString(uicolor), 0xF14040, NULL);
livesRemaining = 3