Problem mit dem ifstream



  • Hallo,
    Ich habe folgendes Problem:
    Simple gesagt will ich das der Code immer wenn er aufgerufen wird die Zahl in einer (.txt) Datei um 1 erhöht.
    Doch wie ihr euch sicher schon denken könnt klappt das nicht ganz. Hier der Code-Schnipsel:

                int Checkint = 0;
                size_t* Checksize_t = 0;
                string Checkstring;
                ifstream Check("Documents//check.txt");
                if (Check.is_open()) {
                    getline(Check, Checkstring);
                    stoi(Checkstring, Checksize_t, Checkint);
                    Checkint++;
                    Checkstring = to_string(Checkint);
                    Check.close();
                }
                else {
                    return 0;
                }
    

    Falls ihr einen Logik-Fehler oder etwa anderes findet, wäre ich sehr dankbar wenn ihr mich darüber aufklärt!
    Vielen Dank im Vor raus!



  • Ich denk mal es wird die neue Zahl nicht in die Datei geschrieben. Was du hättest durchaus mal sagen können was nicht klappt. Aber nur so als Tip, wann schreibst dui die Zahl in die Datei?



  • Ich glaube so einen offensichtlich logisch falschen Code habe ich noch nie geschrieben. Ich schäm mich grad so doll.
    Ich habe einfach vergessen das Ergebnis in die Datei zu schreiben. Es tut mir sehr Leid deine Zeit mit so etwas offensichtlichen genommen zu haben.
    Sorry!



  • @Felix sagte in Problem mit dem ifstream:

    Ich glaube so einen offensichtlich logisch falschen Code habe ich noch nie geschrieben. Ich schäm mich grad so doll.

    Vor allem scheinst Du Dir gerne das Leben schwerer zu machen als es ist:

    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    
    int main()
    {
        char const* const filename{ "counter.txt " };
        int counter;
        {
            std::ifstream is{ filename };
            if (!is.is_open()) {
                std::cerr << "Couldn't open \"" << filename << "\" for reading :(\n\n";
                return EXIT_FAILURE;
            }
            if (!(is >> counter)) {
                std::cerr << "Couldn't read counter value from \"" << filename << "\" :(\n\n";
                return EXIT_FAILURE;
            }
        }
        ++counter;
        {
            std::ofstream os{ filename, std::ios_base::trunc };
            if (!os.is_open()) {
                std::cerr << "Couldn't open \"" << filename << "\" for writing :(\n\n";
                return EXIT_FAILURE;
            }
            if (!(os << counter)) {
                std::cerr << "Couldn't write counter value to \"" << filename << "\" :(\n\n";
                return EXIT_FAILURE;
            }
        }
    }
    

Anmelden zum Antworten