Als String übergebene Datei öffnen
-
Hallo,
als Nur-gelegentlich-C++-Benutzer (*) verzweifle ich mal wieder an den Datentypen .
Wie kann ich den als "String^ strRevisionFile" übergebenen Dateinamen öffnen?
Aus anderen Beispiele habe ich einen Teil des Quellcodes abgeschaut, aber getline funktioniert auch nicht.(*) Normalerweise arbeite ich mit C im embedded Bereich
int main(array<System::String ^> ^args) { int intRevision = 0; /* Tu etwas sinnvolles */ intRevision = GetRevision(args[1]); /* Tu etwas anderes sinnvolles */ return 0; } int GetRevision(String^ strRevisionFile) { Int32 int32Revision = 0; wchar_t *FileName; String^ text; ifstream RevisionFileStream; //Datei-Handle FileName = strRevisionFile->c_str(); RevisionFileStream.open(FileName, ios::in); //Datei wird geöffnet while (!RevisionFileStream.eof()) { std::getline(RevisionFileStream, text); //Es wird jeweils eine Zeile ausgelesen // cout << text << endl; RevisionFileStream.close(); } return int32Revision; }
Fehlermeldungen:
1>------ Erstellen gestartet: Projekt: myprog, Konfiguration: Debug Win32 ------
1> myprog.cpp
1>myprog.cpp(66): error C2039: 'c_str': Ist kein Element von 'System::String'
1> c:\program files (x86)\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll: Siehe Deklaration von 'System::String'
1>myprog.cpp(71): error C2039: 'getline': Ist kein Element von 'std'
1>myprog.cpp(71): error C3861: "getline": Bezeichner wurde nicht gefunden.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
Steht doch genau in den Fehlermeldungen. Du verwechselst wohl 'System::String' mit 'std::string'. Benutz ToCharArray statt c_str
Wenn du aber C++/CLI richtig machen willst, benutzt du auch die entsprechenden Klassen zum Öffnen von Dateien, siehe hier:
http://msdn.microsoft.com/de-de/library/y52yxde8.aspx