Announcement

Collapse
No announcement yet.

Konvertierung von AnsiString nach char*

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Konvertierung von AnsiString nach char*

    <p>Hallo zusammen<br>
    Bei meinem Programm wird ein Pfad eingelesen. Das mache ich mit einem OpenDialog. Dieser Pfad wird nachher aber gebraucht. Der Pfad wird für ein fopen Befehl gebraucht. =>
    <pre>
    AnsiString Pfad;
    Datei = fopen(Pfad,"a");
    </pre>
    Beim compilieren kommt aber folgende Fehlermeldung:<br>
    "[C++ Fehler] FormEntschl.cpp(24): E2034 Konvertierung von 'AnsiString' nach 'const char *' nicht möglich"
    </p>
    <p>Was kann ich dagegen machen?</p>
    <p>Gruss Thierry</p>

  • #2
    Datei = fopen(Pfad.c_str(),"a")
    Günther

    Comment


    • #3
      <p>Merci vielmals. Was bedeutet das eigentlich ".c_str()"? </p>
      <p>Gruss Thierry</p&gt

      Comment


      • #4
        Mit .c_str() wird aus einem AnsiString ein char *gemacht. Warum die Schreibweise .c_str() gewählt wurde und was überhaupt der ganze Quatsch mit dem AnsiString soll, darfst Du mich nicht fragen
        Günther

        Comment


        • #5
          Tja, aber char kennt nicht das schöne zusammen fügen und kopieren von Strings.

          Wer mit char String verketten möchte muß strcat nutzen. Und für das kopieren ist strcpy zuständig.

          Auch muß man ständig die Länge beachten (ist bein strcpy noch genügend Platz da??). Da ist es etwas einfacher mit der Klasse String (ANSI-String) zu arbeiten.

          Wo ich Original Funktionen der API nutze ist dann halt str.c_str() zu verwenden.


          Christia
          Christian

          Comment


          • #6
            Hallo zusammen,

            auch ich bevorzuge AnsiString. Es gibt wahrscheinlich keine bessere Stringklasse.

            Gruß Roma

            Comment


            • #7
              Hi guys,

              Borland hat .c_str() verwendet, da dies mit dem ANSI Standard kompatibel ist. Wenn Ihr euch mal die eigentliche string class in <string> anseht, werdet ihr dort ebenfalls die routine c_str() finden.

              Was macht sie eigentlich:
              Ok, normalerweise werden String in C doch mit einfachen char Ketten gebildet. Um ein Ende eines Strings zu erkennen ist am Ende des Strings jeweils ein \0 byte.
              Da AnsiString sowie auch std::string Containerklassen sind, welche immerwieder automatisch nachallokiert werden, ist keine primitive Formatierung mit \0 am Ende implementiert. Darum muss die Routine c_str() verwendet werden um eine char* Stringkette umzukonvertieren.

              Gruesse

              Chri

              Comment

              Working...
              X