Почему этот код дает ошибку подтверждения отладки?Добавить int в std :: string
std::string query;
int ClientID = 666;
query = "select logged from login where id = ";
query.append((char *)ClientID);
Почему этот код дает ошибку подтверждения отладки?Добавить int в std :: string
std::string query;
int ClientID = 666;
query = "select logged from login where id = ";
query.append((char *)ClientID);
Вы бросаете ClientID
на символ * вызывает функцию взять на себя нулевой terinated массив символов, который он не является.
от cplusplus.com:
строки & Append (Const символ * с); Добавляет копию строки, сформированной , с помощью символьной последовательности с нулевым символом (строка C), обозначенной знаком s. Длина этой символьной последовательности определяется первым вводом нулевого символа (как определено по длинам (знаменателями)).
Метод std::string::append()
ожидает, что его аргумент будет состоять из строки с нулевым завершением (char*
).
Есть несколько подходов для получения string
в 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 для boost :: lexical_cast. –
+1 для std :: to_string – luke
+1 для чистого, чистого и полного ответа – ervinbosenbacher
Вы не можете бросить Int на символ *, чтобы получить строку. Попробуйте это:
std::ostringstream sstream;
sstream << "select logged from login where id = " << ClientID;
std::string query = sstream.str();
У меня есть ощущение, что ваш ClientID
не от типа строки (нуль char*
или std::string
), но некоторый интегральный типа (например, int
), поэтому вам необходимо преобразовать номер в строку первой:
std::stringstream ss;
ss << ClientID;
query.append(ss.str());
Но вы можете использовать operator+
, а также (вместо append
):
query += ss.str();
Что такое 'ClientID'? – hmjd
можете добавить к определению ClientID? это std :: string или char *? – dwalter
извините, обновление ^^ – Hakon89