fstream Pfade angeben
-
Ich möchte hier zum Testen Videonauth Code nehmen, aber ohne de dtor Aufruf
Man muss sich immer behelfen, wenn die Datei geöffnet werden konnte, aber nicht erscheint, dann muss Magie im Spiel gewesen sein. Wenn allerdings die Datei nicht einmal geöffnet wird, dass stimmt was mit den Rechten nicht.
Und ich schließ mich an, dass auf Win 6/7 unter C: keine Schreibrechte sind. Beim manuellen reinkopieren von Daten muss man oft auf "als Administrator ausführen" gehen. Führ mal dein Prog in Debug/irgendwas.exe als Admin aus, dann geht's bestimmt.
#include <iostream> #include <fstream> int main(int argc, char* argv[]) { std::fstream filestream; filestream.open("C:\\Testordner\\Hallotest.txt", std::fstream::out | std::fstream::trunc); if(filestream.is_open()) { cout << "Datei wurde geöffnet"; // Wenn das hier kommt, klappte es! filestream << "hallo das ist ein test" << std::endl; filestream.close(); } cin.get(); // Warte auf Eingabe, damit Konsole nicht gleich verschwindet return 0; }
-
cout << "Datei wurde geöffnet"; // Wenn das hier kommt, klappte es!
und wenn nicht?
-
int main() { if (auto file = std::ofstream("C:\\test.txt")) { std::cout << "Yaay!\n"; file << "Hallo, Welt!\n"; } else { std::cout << "Schade ;(\n"; // ("file" existiert auch hier oO :)) } }
*g*
-
ich meine eigentlich, was ich dann machen soll?
ist nämlich der Fall...
-
cooky451 schrieb:
Also merken: nie, nie, nie, unter keinen Umständen den Destruktor manuell aufrufen. Da hast du dir nicht mehr das Bein abgeschossen, da ist auch gleich der Kopf weg.
Bei placement new darf man den Destruktor selber aufrufen.
-
JanK411 schrieb:
ich meine eigentlich, was ich dann machen soll?
ist nämlich der Fall...Testen ob der Ordner existiert und du schreibrechte hast.
-
Aber mit einer Ausnahme hätte es gleich so viel weniger gut geklungen. -.-
-
Wie schon gesagt...
Fehlermeldun ("Schade ;(") ist gekommen und Ordner wurde nicht erstellt.
-
Da hängst du immer noch dran? Der
erste* Post hat dir doch direkt gesagt, dass du auf C:\ keine Schreibrechte hast.* Edit: zweite
-
cooky451 schrieb:
Da hängst du immer noch dran? Der
erste* Post hat dir doch direkt gesagt, dass du auf C:\ keine Schreibrechte hast.* Edit: zweite
Naja, in den eigenen Dokumente-Ordner sollte man als einfacher User noch schreiben dürfen - ansonsten würde ja praktisch jede Software nur als Administrator richtig nutzbar sein.
Was du meinst gilt u.A. für C:\Program Files und C:\Program Files (x86).
Was jetzt der Fehler im Eingangspost war, weiß ich allerdings auch nicht, allerdigs können Schreibfehler so ausgeschlossen werden:
#include <windows.h> #include <shlobj.h> #include <iostream> #include <fstream> #include <string> using namespace std; int main() { char c[MAX_PATH]; SHGetSpecialFolderPath(0, c, CSIDL_MYDOCUMENTS, false); std::string file = c; file+="\\file.txt"; cout << file << "\n"; std::ofstream stream(file.c_str(), ios::out); if(stream.is_open()) { cout << "okay\n"; stream << "Sinnvoller Inhalt"; } else { cout << "gescheitert...\n"; } }