В 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
И посмотрите мой блог на это: Создайте строку на лету только в одну строку