TXT-Dateien können in einem C++-Programm mit Visual Studio 2019 nicht geöffnet werden

Lesezeit: 2 Minuten

TXT Dateien konnen in einem C Programm mit Visual Studio 2019 nicht
ED6

Ich habe gerade angefangen, Visual Studio 2019 zu verwenden, nachdem ich eine Weile XCode verwendet habe. Ich konnte immer txt-Dateien in XCode öffnen, aber jetzt kann ich sie nicht in Visual Studio 2019 öffnen.

Grundsätzlich drücke ich im Reiter “Debug” auf “Start Without Debugging” und erhalte die Fehlermeldung “File Did Not Open!” aus der else-Anweisung, die ich geschrieben habe. Ich bin mir nicht sicher, ob es etwas mit dem Speicherort der txt-Datei oder mit dem Dateipfad zu tun hat.

Unten ist das einfache Programm, das ich bisher verwendet habe, um herauszufinden, wie man TXT-Dateien in Visual Studio 2019 öffnet:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    ifstream fobj;
    fobj.open("input.txt");

    if (fobj)
    {
        cout << "File Opened!n";
    }
    else
    {
        cout << "File Did Not Open!n";
    }

    return 0;
}

  • Was sind Ihre Beweise und Beweise dafür, dass sich darin eine Datei namens “input.txt” befindet? Aktuelles Verzeichnis des Prozesses? Hinweis: Die Existenz einer Datei irgendwo auf Ihrem Computer, sogar im selben Verzeichnis, in dem sich diese C++-Quelle befindet, beweist absolut nichts.

    – Sam Varshavchik

    31. Juli ’19 bei 0:53


  • In Visual Studio ist das aktuelle Arbeitsverzeichnis beim Ausführen Ihres Programms von der ide der gleiche Ordner wie die Projektdatei (es sei denn, Sie haben den Standard geändert).

    – drescherjm

    31. Juli ’19 um 0:55


  • Ich habe Schwierigkeiten ist keine Problembeschreibung, es sei denn, Sie sagen uns genau, was Problem du hast. Du hast hier kein Problem erklärt.

    – Ken White

    31. Juli ’19 um 0:55

  • Benutz einfach if (fobj.is_open())

    Benutzer1944429

    31. Juli ’19 um 0:56

  • Wenn Sie die Datei im richtigen Ordner haben, der in meinem letzten Kommentar besprochen wurde, stellen Sie sicher, dass sie richtig benannt ist. Die standardmäßige Windows-Funktion zum Ausblenden von Erweiterungen für bekannte Dateitypen könnte Ihnen im Weg stehen. Vielleicht heißt Ihre Datei tatsächlich input.txt.txt aber die versteckten Erweiterungen haben es nicht leicht gemacht, dies zu erkennen.

    – drescherjm

    31. Juli ’19 um 1:50


Du verwendest a relativ Dateipfad, um die Datei zu öffnen. Das “aktuelle Arbeitsverzeichnis” des aufrufenden Prozesses ist wahrscheinlich nicht das, was Sie erwarten (überprüfen Sie mit GetCurrentDirectory() verifizieren). Verwenden Sie immer absolut Dateipfade beim Öffnen von Dateien.

Wenn sich die Datei beispielsweise im selben Ordner wie Ihre EXE befindet, verwenden Sie GetModuleFileName() Um den vollständigen Pfad der EXE zu erhalten, ersetzen Sie den Dateinamenteil durch Ihren gewünschten Dateinamen:

#include <iostream>
#include <fstream>
#include <string>

#include <windows.h>
#include <shlwapi.h>

int main()
{
    char filename[MAX_PATH] = {};
    ::GetModuleFileNameA(NULL, filename, MAX_PATH);
    ::PathRemoveFileSpecA(filename);
    ::PathCombineA(filename, filename, "input.txt");

    std::ifstream fobj;
    fobj.open(filename);

    if (fobj)
    {
        std::cout << "File Opened!n";
    }
    else
    {
        std::cout << "File Did Not Open!n";
    }

    return 0;
}

.

445040cookie-checkTXT-Dateien können in einem C++-Programm mit Visual Studio 2019 nicht geöffnet werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy