Announcement

Collapse
No announcement yet.

String^ nach char wandeln

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

  • String^ nach char wandeln

    Hy, ich muss in c++ ein kleines Programm schreiben und habe so gut wie keine Ahnung von C++.

    Ich habe alles aus dem Internet hinbekommen bis auf eines. Ich bekomme einen String^ - Parameter und muss mit diesem einen fstream.open durchführen.

    Hier meine Methode:
    [highlight=c++]
    void writeTextToFile(String^ fileName, String^ text)
    {
    char* fileNameCHAR = const_cast<char*>(fileName.c_str());

    std::fstream outfile;
    outfile.open(fileNameCHAR, ios:ut|ios::app);
    outfile << text << std::endl;
    outfile.close();
    }
    [/highlight]

    Ich bekomme es einfach nicht hin, den String^-Parameter in die entsprechende Formatierung zu bekommen, dass ich damit die Datei öffnen kann. Ich hatte angenommen es müsste ein char* sein

    Oder gibt es eine elegantere Lösung.

    Ich programmiere unt C++ Express von Microsoft.

    Vielen Dank für Eure Unterstützung.

    Gruß Lerando

  • #2
    Die Stringklasse sollte c_str() als Methode zur Verfügung stellen.
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Die Stringklasse sollte c_str() als Methode zur Verfügung stellen.
      Meine Includes und Namespaces:
      [highlight=c++]
      #include "stdafx.h"
      #include <stdio.h>
      #include <windows.h>
      #include<iostream>
      #include<fstream>
      #include<string>


      using namespace System;
      using namespace System::Collections;
      using namespace std;
      [/highlight]

      Macht es evtl. einen Unterschied ob es ein System::String oder std::string ist?

      Ich bekomme ein System::String.

      Gruß Lerando

      Comment


      • #4
        Stimmt denn überhaupt mein Code?

        Oder habe ich evtl. einen Gedankenfehler?

        Gruß Lerando

        Comment


        • #5
          Macht es evtl. einen Unterschied ob es ein System::String oder std::string ist?
          Sicherlich, das sind 2 unterschiedliche Klassen. Erstes von Microsoft, zweitere aus der STL von C++
          System::String sollte
          PtrToStringChars
          haben
          Christian

          Comment


          • #6
            Originally posted by Christian Marquardt View Post
            Sicherlich, das sind 2 unterschiedliche Klassen. Erstes von Microsoft, zweitere aus der STL von C++
            System::String sollte
            PtrToStringChars
            haben
            Ich habe noch zwei Fragen:

            Ist denn die Zeile
            [highlight=c++]
            outfile.open(fileNameCHAR, ios:ut|ios::app);
            [/highlight]
            überhaupt richtig? Muss hier eine Konstante char* sein?

            Wie wende ich PtrToStringChars richtig an?

            Vielen Dank

            Gruß Lerando

            Comment


            • #7
              Ich habe die Lösung doch noch gefunden.

              Hier die Lösung

              [highlight=c++]
              #include "stdafx.h"
              #include <stdio.h>
              #include <windows.h>
              #include<iostream>
              #include<fstream>
              #include<string>


              using namespace System;
              using namespace System::Collections;
              using namespace System::Runtime::InteropServices;
              using namespace std;

              ...
              void writeTextToFile(String^ fileName, String^ text)
              {

              char* fileNameCHAR = (char*)(void*)Marshal::StringToHGlobalAnsi(fileNam e);

              std::fstream outfile;
              outfile.open(fileNameCHAR, ios:ut|ios::app);
              outfile << "test" << std::endl;
              outfile.close();
              }
              ...
              [/highlight]

              Comment

              Working...
              X