Ist es möglich, Text zu einem char*
hinzuzufügen?Text zum Zeichen hinzufügen *
Da dieser Code Fehler gibt:
name3 = "SELECT account_id FROM players WHERE name = '" + name + "'";
(name3 = a char *)
Ist es möglich, Text zu einem char*
hinzuzufügen?Text zum Zeichen hinzufügen *
Da dieser Code Fehler gibt:
name3 = "SELECT account_id FROM players WHERE name = '" + name + "'";
(name3 = a char *)
Ihre Frage mit C++, markiert so C++ verwenden. Befreien Sie sich von Ihrem char*
‚s und verwenden std::string
:
std::string name = "...";
std::string name3 = "SELECT account_id FROM players WHERE name = '" + name + "'";
Sie können zwei Zeichen-Arrays (char *‚add‘‘ s) durch ein neues Array groß genug, um die Zuweisung sowohl zu halten, und das Kopieren beider Strings in die neuen Array. Ich denke, Sie werden zustimmen, dass std::string
einfacher ist, aber es bietet auch weniger Gelegenheit für Sie, um subtile Fehler in Ihren Code einzuführen, die das Debugging und die Wartung einfacher machen.
Als Nebenbemerkung, wenn Sie planen, viele String-Verkettung zu tun, sollten Sie 'std :: stringstream' verwenden. Vermeiden Sie auch die Verwendung von Inline-SQL. –
Sie müssen die Speicher zuerst, zum Beispiel zuteilen:
char* name = new char[ BUFF_SIZE ];
und dann strcpy
und strcat
verwenden, aber .. Sie haben Tag c++
. Verwenden std::string
std::string name3 = "SELECT account_id FROM players WHERE name = '"
+
std::string(name)
+
"'";
oder
std::string name3 = "SELECT account_id FROM players WHERE name = '";
name3 += name;
name3 += "'"; // or name3.push_back(';');
Hinweis wenn name
nicht const char*
, aber std::string
, die Sie nicht von expliziten Konvertierungen benötigen, so finden Sie in der
'std :: string' ist schlauer als das. Sie benötigen höchstens 'std :: string (name)', die anderen expliziten Deklarationen sind nur Unordnung. – meagar
Ja, richtig, danke –
meagar schreiben Sie können auch Verwenden Sie sprintf für das, was Sie beschreiben.
Auch wenn dies für eine Datenbankverbindung ist, sollten Sie vorbereitete Anweisungen verwenden.
-1 für die Empfehlung der Verwendung der unsicheren 'Sprintf'-Funktion. –
+1 für vorbereitete Anweisungen, -1 für 'sprintf' (verwenden Sie' string', Streams oder schlimmstenfalls 'snprintf'. –
+1 für vorbereitete Anweisungen. Ernsthaft, hören Sie sich diesen Typ an. Machen Sie __nicht_ SQL so zu verketten, _ Im besten Fall wird sich Ihr Programm auf seltsame Weise verhalten, wenn es bestimmte Eingaben erhält. Im schlimmsten Fall wird jemand diese leicht erkennbare Sicherheitslücke ausnutzen und etwas tun, das Sie bereuen werden. –
Siehe [SQL injection attack] (http://en.wikipedia.org/wiki/SQL_injection) –