我有一个默认参数的功能,可以显示文本到屏幕。像这样:
DrawScreenString(int, int, string, int uicolor, font);
但是我试图传入一个字符串变量" livesRemaining"像这样:
DrawScreenString(10, 5, "Lives : %d ",livesRemaining, 0xF14040, NULL);
livesRemaining = 3
因为函数只接受5个参数,所以它无法编译,因为函数认为我试图传递第6个参数而不知道我试图添加字符串已经存在的字符串"生活:"
这就是我想要的结果:
Live : 3
我知道这不是正确的做法,我该怎么做? 非常感谢!!
答案 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