C++ Datei wird nicht erstellt
-
Moin,
es soll ein Wort eigegeben werden und dieses in einer Datei gespeichert werden. Anschließend soll gefragt werden, ob Eingabe überarbeitet werden soll, falls ja soll das alte Wort überschrieben werden. Läuft auch durch, die Datei wird aber nicht erstellt. Kann jmd helfen?
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<string>using namespace std;
int main()
{
fstream file;
string wort;
string wortNeu;
int x = 0;cout << "Geben Sie das Wort ein:" << endl;
cin >> wort;file.open("C:\\beispiel.txt", ios::out);
if (file.is_open())
{
file << wort;
file.close();
}cout << "Möchten Sie das Wort überarbeiten? (Ja=1; Nein=2)" << endl;
cin >> x;if (x==1)
{cout << "Geben Sie das neue Wort ein:" << endl;
cin >> wortNeu;file.open("C:\\beispiel.txt", ios::trunc);
file << wortNeu;
file.close();
}return 0;
}Liebe Grüße
-
Vermutlich ne Zugriffsverletzung.
Und
std::ios::truncmusst du nicht angeben.Und beim zweiten Öffnen der Datei vergisst du auf
is_open()zu prüfen. Und muss in die erste Abzweigung rein.Und benutze
ofstream.Und benutze nächstes Mal Code-Tags.
-
Benutze
std::ios::outstatt nurtrunc
-
Hast du denn Schreibzugriff auf C:\ ?
-
Versuch mal das auf "C:/Users/<Benutzer>/". Sowas legt man doch nicht auf C:/ ab. Vorkompilierte header würde ich erstmal weg lassen (leeres Projekt).
So sollte es dann funktionieren (nur mal ein Vorschlag, kann man auf 100 verschiedene Weisen machen):
#include<iostream> #include<fstream> #include<string> using std::cin; using std::cout; int main() { std::string word; // das Wort, welches eingelesen wird int x = 1; // Variable, um die Abbruchbedingung zu pruefen do { cout << "Geben Sie das Wort ein: "; if (cin >> word) // bei Eingabe von o.a. EOF soll die Ausgabe unten nicht passieren { cout << "Moechten Sie das Wort ueberarbeiten? (Ja=1; Nein=2)\n"; } } while (cin >> x && x == 1); // Der benutzer muss eine 1 eingeben, damit die Schleife weiter laeuft std::ofstream file("C:/Users/<Benutzer>/beispiel.txt"); // ctor oeffnet intern gleich die Datei if (!file) { std::cerr << "Fehler beim oeffnen der Datei!\n"; return 1; } file << word; return 0; } // implizit file.close() durch dtorMangel wäre o.a. dass man nur ein Wort eingeben kann, und das Programm nicht den Rest der Eingabe ignoriert, nachdem es ein Wort gelesen hat.