整数を std::string に追加する: アサーションが失敗する理由
C で、整数値を std::string に直接追加しようとした場合見たとおりの std::string以下:
std::string query; int ClientID = 666; query = "select logged from login where id = "; query.append((char *)ClientID);
デバッグ アサーション エラーが発生する可能性があります。これは、 std::string::append() メソッドの引数が NULL で終了する文字列 (char*) である必要があるために発生します。ただし、整数を null 文字で終了せずに文字配列へのポインタとして渡すと、未定義の動作が発生し、クラッシュする可能性があります。
整数を std::string に正しく追加するには、いくつかの方法があります。利用可能:
1. std::ostringstream の使用:
#include <sstream> std::ostringstream s; s << "select logged from login where id = " << ClientID; std::string query(s.str());
このメソッドは stringstream オブジェクトを作成し、そこにテキストと整数値を挿入し、結果の文字列を取得します。
2. std::to_string の使用 (C 11):
std::string query("select logged from login where id = " + std::to_string(ClientID));
このアプローチでは、std::to_string 関数を使用して整数を文字列に変換し、連結を実行します。
3. boost::lexical_cast の使用:
#include <boost/lexical_cast.hpp> std::string query("select logged from login where id = " + boost::lexical_cast<std::string>(ClientID));
このメソッドは、Boost ライブラリの lexical_cast 関数を利用して、整数を文字列に変換し、連結を実行します。
以上が整数を std::string に直接追加するとデバッグ アサーションが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。