Programmierproblem C++

  • Hi ihrs ich hab nen winzig kleines problem.

    Ich möchte daten aus einer string variablen in eine CString variable übertragen.
    dazu verwende ich folgende codezeile

    strPlate=string1.c_str();

    nun habe ich das problem, dass wenn ich cout << string1; mache richtig MD180 ausgegeben wird (Kennzeichen)
    wenn ich nach dieser Operation cout << strPlate; mache kommt
    00359958 heraus (oder anderer kauderwelsch)

    woran kann das liegen?

  • Die AnsiString-Methode c_str() liefert einen Zeiger auf ein nullterminiertes char-Array mit demselben Inhalt wie der AnsiString.

    Da es sich nur um einen Zeiger auf nicht explizit reservierten Speicherplatz handelt, ist der Inhalt des Arrays nur im Moment der Übergabe garantiert. Wird der char* für weitere Operationen benötigt, muss z.B. per strcpy() eine echte Kopie des AnsiString-Inhaltes angelegt werden.


    steht bei der funktoion :d
    vllt gehts mit :

    strcpy(strPlate,string1.c_str());

    wenn nich
    char *ch = new char[strText.Length()+1];
    strcpy(ch, strText.c_str());
    ...
    delete [] ch;

    steht auch noch dabei ,)

  • naja bei version eins wirft mir vs den fehler
    1>c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\xsafas\xsafas\xsafas.cpp(58) : error C2664: 'strcpy': Konvertierung des Parameters 1 von 'CString' in 'char *' nicht möglich

    :)


    und beim 2. hab ich immer noch keine änderung des verhaltens :)

  • strPlate wird als Zahl ausgegeben?

    Entweder ist diese Variable nicht als C String bzw. Array-dings-Char definiert und Warnings wurden übersehen oder etwas stimmt mit deiner Ausgabe nicht, obwohl ersteres nicht sein kann.

    Das war doch so in C, dass man in der Ausgabe nochmal kodiert angeben muss mit % Zeichen soweit ich mich erinnern kann, um was für eine Art Ausgabe es sich handelt und waren >> << nicht Bitoperatoren?

    Ich müsste jetzt meine Bücher raussuchen damit ich die Gedanken den richtigen Dingen zuordnen kann. Das ist wie in der Signatur bei mir nur auf Lernmaterial bezogen:

    "Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind" Immanuel Kant, Kritik der reinen Vernunft

  • was so n neustart von visual studio manchmal bringen kann :) jetzt gehts :) (zusätzlich noch in verbindung mit .getString() bei dem cstring :)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!