Heim > Backend-Entwicklung > C++ > Warum führt das Anhängen einer Ganzzahl an einen String in C zu einem Assertionsfehler?

Warum führt das Anhängen einer Ganzzahl an einen String in C zu einem Assertionsfehler?

Susan Sarandon
Freigeben: 2024-11-11 11:04:03
Original
599 Leute haben es durchsucht

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

Anhängen einer Ganzzahl an eine Zeichenfolge in C: Fehlerbehebung bei Assertionsfehlern

Betrachten Sie den folgenden Code, der versucht, eine Ganzzahl an eine Zeichenfolge anzuhängen:

std::string query;
int ClientID = 666;
query = "select logged from login where id = ";
query.append((char *)ClientID);
Nach dem Login kopieren

Dieser Code löst jedoch einen Debug Assertion Failure aus. Um zu verstehen, warum, müssen wir das erwartete Verhalten von std::string::append() untersuchen.

std::string::append() benötigt ein char*-Argument, das mit NULL terminiert sein sollte Zeichenfolge im C-Stil. In unserem Fall übergeben wir jedoch einen Rohzeiger auf die Ganzzahl ClientID, die keine NULL-terminierte Zeichenfolge ist.

Lösungsansätze

Um eine anzuhängen Wenn Sie in C eine Ganzzahl in einen String konvertieren möchten, haben Sie mehrere Möglichkeiten:

1. std::ostringstream

#include <sstream>

std::ostringstream s;
s << "select logged from login where id = " << ClientID;
std::string query(s.str());
Nach dem Login kopieren

2. std::to_string (C 11 und höher)

std::string query("select logged from login where id = " +
                  std::to_string(ClientID));
Nach dem Login kopieren

3. Boost::lexical_cast

#include <boost/lexical_cast.hpp>

std::string query("select logged from login where id = " +
                  boost::lexical_cast<std::string>(ClientID));
Nach dem Login kopieren

Bei jedem dieser Ansätze wird die ganzzahlige ClientID korrekt in eine Zeichenfolge konvertiert und an die Basiszeichenfolge angehängt, wodurch eine gültige Zeichenfolge erzeugt wird, ohne dass ein Assertionsfehler ausgelöst wird.

Das obige ist der detaillierte Inhalt vonWarum führt das Anhängen einer Ganzzahl an einen String in C zu einem Assertionsfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage