在C 中將整數附加到字串:斷言失敗故障排除
考慮以下嘗試將整數附加到字串的程式碼:
std::string query; int ClientID = 666; query = "select logged from login where id = "; query.append((char *)ClientID);
但是,此程式碼會觸發偵錯斷言失敗。要理解原因,我們需要檢查 std::string::append() 的預期行為。
std::string::append() 採用 char* 參數,該參數應該是 NULL 終止的C 風格的字串。但是,在我們的例子中,我們將原始指標傳遞給整數 ClientID,該指標不是以 NULL 結尾的字串。
解決方案
附加將整數轉換為 C 中的字串,您有多種選擇:
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 及更高版本)
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));
每種方法都會正確地將整數ClientID 轉換為字串並將其附加到基本字串,從而產生有效的字串,而不會觸發斷言失敗。
以上是為什麼在 C 中將整數附加到字串會導致斷言失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!