首頁 > 後端開發 > C++ > 主體

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

Susan Sarandon
發布: 2024-11-11 11:04:03
原創
550 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板