C で文字列に整数を追加するとアサーション エラーが発生するのはなぜですか?

Susan Sarandon
リリース: 2024-11-11 11:04:03
オリジナル
573 人が閲覧しました

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 スタイルの文字列。ただし、この例では、NULL で終わる文字列ではない、整数の ClientID への生のポインタを渡しています。

解決策のアプローチ

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート