首頁 >後端開發 >C++ >為什麼在 C 中將整數附加到字串會導致斷言失敗?

為什麼在 C 中將整數附加到字串會導致斷言失敗?

Susan Sarandon
Susan Sarandon原創
2024-11-11 11:04:03600瀏覽

Why Does Appending an Integer to a String in C   Cause an Assertion Failure?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn