何らかの抽象化を使用してストリームを操作したいので、ifstream と ofstream の代わりに fstream* を使用したいと考えています。私はそのようにしようとしましたが、アクセス違反を引き起こします:
char* text= "test";
fstream* o = new fstream();
o = &fstream("name.txt");
o->write(text, 4);
o->close();
どうすれば修正できますか、または別のアイデアを使用できますか?
この場合、ポインターを使用したい (より一般的な情報については、こちらを参照してください) C++ で独自の IO ファイル API を実装する方法
変更後は、次のようになります。
class GIO_Persistent_File_System : public GIO_CORE
{
public:
GIO_Persistent_File_System(void);
int open(char*, int);
int close();
void write(char* s, int size);
void read(char* s, int size);
public:
~GIO_Persistent_File_System(void);
private:
fstream file;
};
int GIO_Persistent_File_System::open(char* path, int mode){
file.open(path);
return 0;
}
int GIO_Persistent_File_System::close(){
file.close();
return 0;
}
void GIO_Persistent_File_System::write(char* s, int size){
file.write(s, size);
return;
}
void GIO_Persistent_File_System::read(char* s, int size){
file.read(s, size);
return;
}
主要:
GIO_CORE* plik = new GIO_Persistent_File_System();
char* test = new char[10];
char* napis = "testgs";
plik->open("name.txt", OPEN_MODE);
plik->write(napis, 2);
//plik->read(test,2);
plik->close();
そして、このコードは機能しているようですが、ファイルが見つかりません。確認したところ、現在のディレクトリが正しく指定されています (ProjectName/Debug)
私はそれをチェックし、fstreamをofstreamに変更すると正常に機能し、ファイルを見つけることができます. しかし、ある程度の抽象化を実現したいので、fstream を使用したいと思います。どうすれば修正できますか?