Wenn ich über eine std::unordered_map
mit dem Bereich für Schleife zweimal durchlaufen, ist die Reihenfolge garantiert gleich?Ist für (auto i: unordered_map) garantiert, jedes Mal die gleiche Reihenfolge zu haben?
std::unordered_map<std::string, std::string> map;
std::string query = "INSERT INTO table (";
bool first = true;
for(auto i : map)
{
if(first) first = false;
else query += ", ";
query += i.first;
}
query += ") ";
query += "VALUES (";
first = true;
for(auto i : map)
{
if(first) first = false;
else query += ", ";
query += i.second;
}
query += ");"
Im obigen Beispiel sollte die resultierende Zeichenfolge in dieser Form sein. Daher ist es wichtig, dass beide Male die Reihenfolge der Iterationen gleich ist.
INSERT INTO table (key1, key2, key3) VALUES (value1, value2, value3);
Ist dies in C++ garantiert?
Bitte sagen Sie mir, dass Sie irgendwo gegen SQL-Injektion schützen. –
@D.Shawley Ich nicht im Moment. Aber es geht um die Rettung eines Computerspiels. Ich code das Spiel und es gibt keine Möglichkeit, SQL von außerhalb des Anwendungscodes überhaupt zu injizieren. – danijar
Ich krümme mich einfach jedes Mal, dass ich SQL-Strings durch Raw-String-Verkettung erstellen. –