Strings in C++
-
Wie ist das wenn man mehrer Variablen in einem String zusammenfügen möchte?
Beispiel:while ((row = mysql_fetch_row (res)) != NULL) { anzeige=row[0]; anzeige=anzeige + (", ") + row[1]; n++; TextOut(hDC, 3, ((n)*20)+20, anzeige.c_str(), sizeof(anzeige)); }Das klappt so (mit einem Fehler, den ich gleich noch nennen möchte), aber wieso kann ich nicht schreiben
anzeige=row[0]+(", ")+row[1];
Dann sagt er mir nämlich immer, dass zwei Zeiger nicht addiert werden können.Kann man das auch mit char lösen?
-
Hallo,
lomtas schrieb:
aber wieso kann ich nicht schreiben
...weil...
...zwei Zeiger nicht addiert werden können.
Ein char[] wird als char* repräsentiert wenn du es an eine Funktion übergibst.
Wenn du die richtige Größe des Arrays haben möchtest, musst du das so berechnen:int len = sizeof(anzeige)/sizeof(char);
-
Kann ich die dann irgendwie nicht als Zeiger, sondern direkt als variablen übergeben?
Weil ich komme halt von PHP und da waren solche Dinge klein Problem:
select="SELECT name, vorname FROM k_kontakt WHERE date_formate(geburtstag,%m)='" + st.wMonth + "' LIMIT 0,1";
Wie kann ich das in c++ relasieren (er meckert da nämlich schon wieder von wegen zwei zeigern....)
-
Hallo,
moment, ich hab mich vertan:
sizeof(anzeige)Ist natürlich auch richtig, weil ein char sowieso immer die Größe 1 hat.
EDIT:
Ok, jetzt verstehe ich. Du kannst strings addieren, wenn es sich um den Typ std::string handelt:#include <iostream> #include <string> using namespace std; int main() { string anzeige = "hallo" ; char row[]="welt"; anzeige = anzeige + ", " + row; cout << anzeige << endl; }Das geht mit char* nicht so einfach, da müsstest du dir mal die Funktion strcpy etc. ansehen:
man: strcpyStd::string machte einem das schon sehr viel leichter.
-
habe mein beitrag über deinem noch mal editiert. ist das verständlich?
-
Ich verstehe erstens nicht, was CarstenJs Posts sagen soll.
Und zweitens ehrlichgesagt nicht, warum das nicht funktioniert.
anzeige ist ja anscheinend ein std::string (schließe ich aus dem .c_str()). string + const char * gibt string. Und dazu kann man nochmal const char * addieren. Das mit dem sizeof ist natürlich Unsinn, das sollte wohl anzeige.length() heißen.
-
Ich verstehe erstens nicht, was CarstenJs Posts sagen soll.
Ich auch nicht mehr. Hab die Hälfte überlesen.

-
CarstenJ schrieb:
Hallo,
moment, ich hab mich vertan:
sizeof(anzeige)Ist natürlich auch richtig, weil ein char sowieso immer die Größe 1 hat.
"sizeof(anzeige)" ist nicht richtig, wenn du die Länge der Zeichenkette ermittlen willst - dafür benötigst du bei C++ Strings "anzeige.size()". (mit dem sizeof-Operator erhältst du nur die Größe der String-Struktur - und die ist konstant)
-
War doch schon geklärt soweit ich richtig gelesen habe....
-
anzeige.size oder anzeige.lenght?
-