¿Por qué este código da un error de aserción de depuración?Agregue un int a std :: string
std::string query;
int ClientID = 666;
query = "select logged from login where id = ";
query.append((char *)ClientID);
¿Por qué este código da un error de aserción de depuración?Agregue un int a std :: string
std::string query;
int ClientID = 666;
query = "select logged from login where id = ";
query.append((char *)ClientID);
Usted está echando ClientID
a char * causando la función de asumir su nula terinated una matriz de caracteres, lo que no lo es.
de cplusplus.com:
cadena & modo de adición (const char * s); Añade una copia de la cadena formada por la secuencia de caracteres terminada en nulo (cadena C) apuntada por s. La longitud de esta secuencia de caracteres está determinada por la primera ocurrencia de un carácter nulo (según lo determinado por rasgos.tiempo (s)).
El método std::string::append()
espera que su argumento sea una cadena con terminación NULL (char*
).
Hay varios enfoques para la producción de un string
containg un int
:
#include <sstream>
std::ostringstream s;
s << "select logged from login where id = " << ClientID;
std::string query(s.str());
std::to_string
(C++ 11)
std::string query("select logged from login where id = " +
std::to_string(ClientID));
#include <boost/lexical_cast.hpp>
std::string query("select logged from login where id = " +
boost::lexical_cast<std::string>(ClientID));
+1 para boost :: lexical_cast. –
+1 para std :: to_string – luke
+1 para la respuesta clara, limpia y completa – ervinbosenbacher
No se puede emitir un int a char * para obtener una cadena. Prueba esto:
std::ostringstream sstream;
sstream << "select logged from login where id = " << ClientID;
std::string query = sstream.str();
Tengo la sensación de que su ClientID
no es de un tipo de cadena (cero terminados char*
o std::string
) pero algunos tipo integral (por ejemplo int
) por lo que necesita para convertir el número a la primera cadena:
std::stringstream ss;
ss << ClientID;
query.append(ss.str());
pero se puede utilizar operator+
también (en lugar de append
):
query += ss.str();
¿Qué es 'ClientID'? – hmjd
puede agregar a la definición de ClientID? ¿es un std :: string o un char *? – dwalter
lo siento, actualice ^^ – Hakon89