【发布时间】:2017-06-23 18:35:49
【问题描述】:
目前我有一个方法如下:
std::stringstream ss; ss << "lives:" << this->Lives;
Text->RenderText(ss.str(), font, x, y, scale,color);
现在这对我来说似乎很乱,我想将它减少到一行。 但我似乎想不出一种干净利落的方法。
我曾想过使用可变函数,但这将我限制为一种类型,并且我必须指定参数的数量。
虽然使用了 std::initializer_list 或可变模板,但它似乎并没有更好。
在这个解决方案中:Here Georg Fritzsche 提供的答案显示了一个可能的解决方案:
helper() << a << b << c;
但它的实际实现我....不确定。
类似于:
Text->render(font, x, y, scale,color) << "lives:" << this->Lives;
会很好,但在方法中我不确定如何定义它。
我无法返回一个字符串流对象,因为返回后我无法访问它。
那么像这样的链式
【问题讨论】:
-
Text->RenderText("lives:" + std::to_string(this->Lives), font, x, y, scale,color);? -
@Jarod42 你不能把
+放到char const *上。您可以使用 ""s C++11operator""使其成为 std::string,但:` "lives: "s + ... other stuff` -
@xaxxon:如果右边的参数是
std::string,你可以,就像在 Jarod42 的例子中一样。 -
@BenjaminLindley 我发誓我过去尝试这样做时遇到过错误,但我只是尝试过,它当然可以工作。谢谢。
标签: c++