gpt4 book ai didi

c++ - C++ 中的 sprintf?

转载 作者:太空狗 更新时间:2023-10-29 23:23:32 26 4
gpt4 key购买 nike

我正在寻找 C++ 中的 sprintf。

我想构建一个 mysql 查询字符串,但如果我这样做的话(max_limit 是一个 const int)

std::string query = "select * from bla limit " + max_limit;

查询将不起作用。

最佳答案

在 C++11 中,这变得太容易了。使用 std::to_string()作为:

std::string query = "select * from bla limit " + std::to_string(max_limit);

完成!


旧的解决方案,适用于那些仍在使用 C++03 的人。

使用 stringbuilder 并动态创建 std::string 为:

std::string query = stringbuilder() << "select * from bla limit " << max_limit;

其中 stringbuilder 实现为:

struct stringbuilder
{
std::stringstream ss;
template<typename T>
stringbuilder & operator << (const T &data)
{
ss << data;
return *this;
}
operator std::string() { return ss.str(); }
};

您可以通过多种不同的方式使用stringbuilder,例如:

std::string g(int m, int n) 
{
//create string on the fly and returns it
if ( m < n )
return stringbuilder() << m << " is less than " << n ;
return stringbuilder() << n << " is less than " << m ;
}

void f(const std::string & s );

//call f while creating string on the fly and passing it to the function
f(stringbuilder() << '{' << pc << '}' ); //passed as std::string

//this is my most favorite line
std::string s = stringbuilder() << 23 << " is greater than " << 5 ;

参见 ideone 的演示:http://ideone.com/J995r

查看我的博客:Create string on the fly just in one line

关于c++ - C++ 中的 sprintf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5963242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com