【发布时间】:2013-03-28 14:10:41
【问题描述】:
我想使用一些抽象对流进行操作,因此我想使用 fstream* 而不是 ifstream 和 ofstream。我试图这样做,但会导致访问冲突:
char* text= "test";
fstream* o = new fstream();
o = &fstream("name.txt");
o->write(text, 4);
o->close();
我该如何解决它,或者使用其他想法?
我想在这种情况下使用指针(您可以在这里查看更多一般信息)How to implement my own IO file API in C++
修改后的样子如下:
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。我该如何解决?
【问题讨论】:
-
这段代码会给你一个错误,不会导致访问冲突。
-
我看到三个编译器错误。
-
为什么我们在这里使用指针?这样做你并没有得到任何好处。
-
代码正在编译,没有错误。
-
Adre:在这个简单的例子中,使用指针是没有意义的。但总的来说我想使用指针