Rumah > Artikel > pembangunan bahagian belakang > Mengapa Menambahkan Integer pada Rentetan dalam C Menyebabkan Kegagalan Penegasan?
Menambahkan Integer pada Rentetan dalam C : Menyelesaikan Masalah Kegagalan Penegasan
Pertimbangkan kod berikut yang cuba menambahkan integer pada rentetan:
std::string query; int ClientID = 666; query = "select logged from login where id = "; query.append((char *)ClientID);
Walau bagaimanapun, kod ini mencetuskan Kegagalan Penegasan Nyahpepijat. Untuk memahami sebabnya, kita perlu menyemak kelakuan yang dijangkakan std::string::append().
std::string::append() mengambil argumen char*, yang sepatutnya ditamatkan NULL Rentetan gaya C. Walau bagaimanapun, dalam kes kami, kami menghantar penunjuk mentah kepada ClientID integer, yang bukan rentetan yang ditamatkan NULL.
Pendekatan Penyelesaian
Untuk menambah integer kepada rentetan dalam C , anda mempunyai beberapa pilihan:
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 dan kemudian)
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));
Setiap pendekatan ini akan menukar ClientID integer dengan betul kepada rentetan dan menambahkannya pada rentetan asas, menghasilkan rentetan yang sah tanpa mencetuskan kegagalan penegasan.
Atas ialah kandungan terperinci Mengapa Menambahkan Integer pada Rentetan dalam C Menyebabkan Kegagalan Penegasan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!