[C/C++]ofstream::open

04/02/2011 17:20 MrSimonKeks#1
Hallo Leute ;D
Ich habe eine Frage. Undzwar brauche ich eine Funktion aus der Klasse ofstream die überprüft ob eine Datei schon erstellt wurde.
Ungefähr soewtas in der Art:
PHP Code:
#include<fstream>
#include<iostream>
int main(){

bool rdy=false;
int i=1;
std::ofstream out;
while(
rdy==false){
if(
Datei>ivorhanden){
i++;
}
else if(
Datei>inicht vorhanden){

out.open("Test.txt","w");
out<<"Peter";
rdy==true;

}
}
std::cout<<"Textdatei "<<i<<" erstellt!"<<std::endl;
system("PAUSE");
return 
0;


Ich hoffe jeman von euch kennt sich besser in der ofstream Klasse aus...
Mfg
Edit:
Falls es das nicht gibt könnt ihr mir eine andere C/C++ Klasse empfehlen? Wäre echt superverrückt von euch ;D
04/02/2011 22:45 vst0rm#2
so könntest das machen

Code:
#include <iostream>
#include <fstream>

using namespace std;

int main()
{

fstream test;

test.open("test.txt", ios::in);

if(!test.is_open())
{
    cerr <<"fail\n";
    return 1;
}

test.close();

return 0;
}
aber mit [Only registered and activated users can see links. Click Here To Register...] wärst du auch schnell zur Lösung gekommen ;-)
04/02/2011 23:38 MrSimonKeks#3
Soweit ich das verstanden habe überprüft is_Open nur ob eine Datei geöffnet ist , was du ja vorher getan hast . Ich würde aber gerne herausbakommen ob die Datei schon existiert...
Yihaaa wenn du so willst kann man alles googlen. Aber wozu gäbe es dann noch Foren? besonders aufs Programmieren bezogen kannst du alles googlen...
Edit: C++ ist sehr groß und ich interessiere mich mehr für mathematische Formeln, Algorithmen etc., aber diesmal bin ich nicht um i/o/fstream herum gekommen.
Edit2: Die einzige Möglickeit die ich sehe wäre via Flag of::app , neuen Text immer wieder hinten ran zuschieben . Würde aber lieber versch. Dateien haben und nicht alles in einer...
04/03/2011 11:14 vst0rm#4
Quote:
Originally Posted by MrSimonKeks View Post
Soweit ich das verstanden habe überprüft is_Open nur ob eine Datei geöffnet ist , was du ja vorher getan hast . Ich würde aber gerne herausbakommen ob die Datei schon existiert...
wenn die Datei nicht existiert dann kann sie nicht geöffnet werden und is_open gibt false zurück ...
man muss halt nur aufpassen welche flags man bei open übergibt.
In dem bsp oben "ios::in" (nur lesend öffnen es wird keine neue Datei angelegt wenn die Datei nicht existriert)
04/03/2011 16:31 xNopex#5
Allgemein kannst du mit folgender Funktion prüfen, ob nach der letzten Funktion ein Fehler mit dem Stream aufgetreten ist:

[Only registered and activated users can see links. Click Here To Register...]


Das heißt du versuchst die Datei zu öffnen und prüfst danach, ob kein Fehler aufgetreten ist, dann wäre die Datei auch vorhanden.
Alternativ kannst du gegebenenfalls auf Funktionen der WinAPI zurückgreifen:

[Only registered and activated users can see links. Click Here To Register...]
04/03/2011 16:54 MrSimonKeks#6
OK das hilft mir beides weiter, danke.
04/03/2011 19:39 ZackBlack#7
Es hätte auch noch das Flag ios::nocreate gegeben.