Appending an Integer to a String in C : Troubleshooting Assertion Failure
Consider the following code that attempts to append an integer to a string:
std::string query; int ClientID = 666; query = "select logged from login where id = "; query.append((char *)ClientID);
However, this code triggers a Debug Assertion Failure. To understand why, we need to examine the expected behavior of std::string::append().
std::string::append() takes a char* argument, which should be a NULL-terminated C-style string. However, in our case, we're passing a raw pointer to the integer ClientID, which is not a NULL-terminated string.
Solution Approaches
To append an integer to a string in C , you have several options:
1. std::ostringstream
#include <sstream> std::ostringstream s; s << "select logged from login where id = " << ClientID; std::string query(s.str());
2. std::to_string (C 11 and later)
std::string query("select logged from login where id = " + std::to_string(ClientID));
3. Boost::lexical_cast
#include <boost/lexical_cast.hpp> std::string query("select logged from login where id = " + boost::lexical_cast<std::string>(ClientID));
Each of these approaches will correctly convert the integer ClientID to a string and append it to the base string, producing a valid string without triggering an assertion failure.
The above is the detailed content of Why Does Appending an Integer to a String in C Cause an Assertion Failure?. For more information, please follow other related articles on the PHP Chinese website!