일부 추상화를 사용하여 스트림을 조작하고자하므로 ifstream 및 ofstream 대신 fstream *을 사용하려고합니다. 나는 그런 일을하려고했지만 액세스 위반을 야기 할 때까지fstream 포인터를 사용하여 파일을 조작하려면 어떻게해야합니까?
char* text= "test";
fstream* o = new fstream();
o = &fstream("name.txt");
o->write(text, 4);
o->close();
어떻게 해결할 수 있습니까? 아니면 다른 생각을 사용할 수 있습니까? 주요
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();
을
나는 지금이 모양 변경 후 How to implement my own IO file API in C++
을 (당신은 더 일반적인 정보는 여기를 찾아보실 수 있습니다)이 경우 포인터를 사용하려면
그리고이 코드는 정상적으로 작동하는 것처럼 보입니다 파일을 찾을 수 없습니다. 내가 확인하고 현재 디렉토리가 올바르게 가리 킵니다 (ProjectName/Debug)
fstream을 ofstream으로 변경하면이 제대로 작동하므로 파일을 찾을 수 있습니다. 그러나 어느 정도의 추상화를 이루기 위해서는 fstream을 사용하고 싶습니다. 어떻게 해결할 수 있습니까?
이 코드는 액세스 위반이 발생하지 않도록 오류를 제공합니다. –
세 가지 컴파일러 오류가 나타납니다. – chris
여기에 포인터를 사용하는 이유는 무엇입니까? 그렇게함으로써 아무 것도 얻지 못하고 있습니다. – andre