Ich habe ein Programm in C++ erstellt, das überprüft, wie viele Wörter ein Text hat. Der Text wird in einer TXT-Datei im selben Verzeichnis wie meine EXE-Datei gespeichert. Ich frage mich, ob es eine Möglichkeit gibt, den Namen meiner .txt-Datei irrelevant zu machen, solange sich die .txt-Datei im selben Verzeichnis wie meine .exe-Datei befindet. Ich möchte in der Lage sein, den Namen der TXT-Datei zu ändern und mein Programm weiterhin erfolgreich auszuführen, ohne die Meldung "Fehler beim Öffnen der Datei" zu erhalten.Lesen von einer TXT-Datei mit einem unspezifizierten Namen aber mit einem bekannten Verzeichnis C++
Lesen von einer TXT-Datei mit einem unspezifizierten Namen aber mit einem bekannten Verzeichnis C++
Antwort
Sie müssen die Dateien in Ihrem App-Ordner auflisten, bis Sie einen mit einer .txt
Dateierweiterung finden.
Allerdings gibt es nichts in den Standard-C++ - Bibliotheken, um das zu handhaben.
Sie benötigen plattformspezifischen APIs verwenden, um den Ordner zu bestimmen, wo Ihre App ausgeführt wird, und dann können Sie plattformspezifischen APIs oder eine 3rd-Party-Cross-Plattform-API 3 verwenden , um die Dateien in diesem Ordner aufzuzählen.
Sobald Sie die Datei entdecken, nur dann können Sie es öffnen.
: (wie das Ergebnis der GetModuleFileName()
auf Windows-Parsing)
: (wie FindFirstFile()
und FindNextFile()
unter Windows)
: (wie boost::filesystem
)
Die C++ 17 [Dateisystem-Bibliothek] (http://en.cppreference.com/w/cpp/filesystem) wird fast genau wie "boost :: filesystem", so dass es erwähnenswert sein kann. –
@MilesBudnek: Das ist aber eine Weile aus. Und wenn man bedenkt, dass viele Leute noch nicht einmal C++ 11 benutzen, ist es nicht wahrscheinlich, dass sie sofort zu C++ 17 springen werden. –
- 1. Lesen Berechtigungen zu einem Verzeichnis in C#
- 2. Lesen von Dateinamen aus einem Verzeichnis
- 3. VBA: Herunterladen einer xlsx-Datei von einer Webseite, aber mit einem Namen, der sich täglich ändert
- 4. C# lesen Ordner (Namen) aus dem Verzeichnis
- 5. Lesen von Dateien aus einem Verzeichnis in einer Meteor App
- 6. Multiple Dateien aus einem Verzeichnis lesen
- 7. nur auf einem Verzeichnis-Attribut gelesen Entfernen von mit C#
- 8. Lesen von Dateien in einem Verzeichnis in einer JAR-Datei
- 9. Wie den Namen der Datei in einem Verzeichnis in C#
- 10. Öffnen einer Datei mit einem unbekannten Namen. C#
- 11. Speichern Bild in einem bestimmten Verzeichnis mit bestimmten Namen
- 12. Wie erhält man eine Ressourcen-ID mit einem bekannten Ressourcennamen?
- 13. Auflisten aller Unterverzeichnisse mit einem angegebenen Namen
- 14. Verknüpfung der C-Bibliothek mit einem nicht standardmäßigen Namen
- 15. Erstellen einer CSV-Datei mit Namen von Dateien in einem Verzeichnis
- 16. Was bedeutet $ c in einem Windows-Verzeichnis?
- 17. Extrahieren von Spalten mit einem bestimmten Namen
- 18. kann nicht lesen Datei aus einem Verzeichnis
- 19. Lesen einer C/C++ - Datenstruktur in C# aus einem Bytearray
- 20. Lesen von einem riesigen MemoryStream in C#
- 21. Konstanten mit einem anderen Namen
- 22. C++ lesen() - von einem Socket zu einem Ofstream
- 23. Suche nach einem bekannten Pfad in OrientDB
- 24. Überspringen von Dateien in einem Verzeichnis mit demselben Namen aus dem Eingabefeld
- 25. Den Namen einer Datei aus einem Textfeld lesen und anzeigen
- 26. Die Verwaltung einer Datenbankverbindung mit einem globalen, globalen Namen verschwindet.
- 27. C# verschiedene Namen aus einem Array auswählen
- 28. WinDbg mit bekannten Modul
- 29. Lesen von Dateinamen mit C++
- 30. Klassen-Attribute mit einem „berechnet“ namen
Sie haben zwei Probleme: Der erste ist, dass es keine * Standard * Möglichkeit gibt, den Inhalt von Verzeichnissen in C++ aufzulisten ([zumindest noch nicht] (http://en.cppreference.com/w/cpp/filesystem)). Dazu müssen Sie Betriebssystemfunktionen verwenden. Das zweite Problem ist, dass Ihr Verzeichnis auch nicht wirklich bekannt ist. [Es gibt auch betriebssystemspezifische Funktionen, um das zu erreichen] (http://stackoverflow.com/questions/1528298/get-path-of-executable). –
@DimChtz: Es gibt keine Standard-API zum Abrufen des ausführbaren Pfads des aufrufenden Prozesses (es sei denn, Sie zählen 'argv [0] ', aber das gilt nur für Konsolen-Apps, und es kann auch so liegen). –
Was passiert, wenn zwei oder mehr Textdateien in diesem Verzeichnis vorhanden sind? Vielleicht sollten Sie den Dateinamen in der Befehlszeile übergeben müssen. –