fstream文件处理不能创建文件而没有错误



我想让我自己的lib (.so)与其他的东西一个类应该创建或打开一个文件和一些方法下载或上传数据在创建的文件与curl lib的帮助。

我的第一个想法是在实例化构造函数上面的对象时打开或生成一个文件。

class myfile {
Public:
std:fstream FILE; 
...
*constructor*
myfile (const char * filename)
myfile.open(filename,..some flags..) 
{
If(!myfile.is_open()){
Error Handling
}

所以愚蠢的想法,因为在构造函数中,我没有为myfile::FILE分配内存,自然我不能打开文件,我的想法是对的吗?

所以我做了一个改变,我创建了一个myfile::create()方法

在main函数的构造函数之后调用。

主:

mylib::networkfile * volatile test = NULL;
test = new mylib::networkfile("test.txt");
test->create();

mylib:: networkfile:

networkfile::networkfile(const char *filename)
{
this->filename.assign(filename);
}

void networkfile::create()
{
FILE.open(name.c_str(),std::ios::in | std::ios::out | std::ios::trunc | 
std::ios::binary | std::fstream::app);
if(!FILE.is_open()) {
std::cerr << "Datei: " << name.c_str() << " cant open/create file" << std::endl;
std::cerr << "Error: " << strerror(errno) << std::endl;
}
}

所以如果我执行程序,我得到我的打开/创建错误,但奇怪的是没有错误从

-rwxrwxrwx测试,也为mylib。所以给定

有人看到我的问题了吗?

好吧,我错了,我使用这个标志来打开我的文件:| std ios std:::::: ios:: | std:: ios: trunc | std:: ios:二进制| std:: fstream:应用

我把它改成std::ios::binary | std::fstream::app,现在它可以正常工作了,我还没有找到原因。

最新更新