Integer in String hinterlegen Problem mit "\x"
-
Hallo C++er,
ich habe folgendes Problem:
Möchte gerne eine MySQL Datenbank beschreiben und bekomme beim zusammensetzten des SQL-Befehls einen Konflikt.
Ich schreibe mir die Befehle einzeln in String Variablen zusammen mit "+="
jedoch wenn ich nun beim schreiben eine Zahl also einen Integer mit "+=" hinterlegen möchte dann bekomme ich ein "\x" vorgeschoben.Bsp.:
String SQL_BEF;
int a=12;SQL_BEF ="BEISPIELTEXT_";
SQL_BEF += a;dann steht in SQL_BEF: "BEISPEILTEXT_\x12"
Das \x würde ich gerne entsorgen.
sprich brauche SQL_BEF: "BEISPEILTEXT_12"
Kann mir einer sagen wie ich dieses Problem beseitige?
-
Was ist/woher kommt der Datentyp "String"?
-
Ganz einfach: lass es. Lerne mit prepared statements umzugehen und verwende Platzhalter. Einen SQL zusammen zu bauen ist zu fehleranfällig. Stichwort: SQL-injection.
Ausserdem gibt es in C++ keinen Datentyp "String".
-
#include <string>
und dann hat man den String zur Verfügung
aber vielen dank für die überaus hilfreichen Antworten ....
-
Nein dann hat man string (mit kleinem s). Das ist ein Unterschied.
-
sebi707 schrieb:
Nein dann hat man string (mit kleinem s). Das ist ein Unterschied.
Wenn wir schon korrigieren, dann richtig: Dann hat man
std::string
-
Wo jetzt klar ist, dass du einen std::string benutzt kann man dir wenigstens erklären wo dein Fehler lag. Du verwendest den operator+= mit einem int, es gibt aber keinen operator+= für ints. Es gibt aber einen für char und dieser wird ausgewählt. Dein int wird dann als ein ASCII Zeichen interpretiert und angehängt. Du kannst dein Programm ja nochmal mit a = 65 starten, dann müsste ein 'A' angehängt werden. Wenn du Zahlen an strings anhängen willst geht das so:
std::string SQL_BEF; int a=12; SQL_BEF ="BEISPIELTEXT_"; SQL_BEF += std::to_string(a);
Für SQL sind prepared statements aber tatsächlich die bessere Lösung.