c++ 中的 sprintf?
我正在寻找 C++ 中的 sprintf 。
我想构建一个 mysql 查询字符串,但如果我这样做(max_limit 是一个 const int),
std::string query = "select * from bla limit " + max_limit;
查询将无法工作。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在 C++11 中,这变得太容易了。使用
std::to_string()
如:完成!
旧解决方案,适用于仍在使用 C++03 的用户。
使用
stringbuilder
并动态创建std::string
如下:其中
stringbuilder
实现为:您可以使用
stringbuilder
> 以多种不同的方式,例如:参见 ideone 的演示: http://ideone.com/J995r
以及看看我的关于此的博客:仅在一行中动态创建字符串
In C++11, this has been made too easy. Use
std::to_string()
as:Done!
OLD SOLUTION, for those who still use C++03.
Use
stringbuilder
and createstd::string
on the fly as:where
stringbuilder
is implemented as:You can use
stringbuilder
in many different ways, such as:See demo at ideone : http://ideone.com/J995r
And see my blog on this : Create string on the fly just in one line
您不需要 sprintf,它不适用于字符串。像这样的事情:
会完成这项工作。然后你可以说:
You don't want sprintf, it doesn't work with strings. Something like this:
will do the job. You can then say:
也许您想看看 boost::format 库。
它提供了 sprintf 的语法以及 c++ 的便利。
所以你的例子是:
Maybe you want to take a look at the boost::format lib.
It provides the syntax of sprintf with the convenience of c++.
So your example would be:
或者只使用宏?(std::ostringstream().seekp(0, std::ios_base::cur)<
#define QueryString(msg) ((static_cast
用法:
std::string query = QueryString("select * from mytable where x="<<30);
Or just use a macro?
#define QueryString(msg) ((static_cast<std::ostringstream&>(std::ostringstream().seekp(0, std::ios_base::cur)<<msg)).str())
Usage:
std::string query = QueryString("select * from mytable where x="<<30);