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: strcpy

    Std::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?




Anmelden zum Antworten