我有一个带有默认参数的函数,可以在屏幕上显示文本。像这样:
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/