您好我正在尝试使用fstream文件句柄执行以下操作:
filepath= name + "/mails.txt";
mkdir(name.c_str(),0600);
log.open(filepath.c_str(), ios::in|ios::out|ios::ate);
if(!log.is_open())cout<<"error"<<endl;
log<<flush;
如果文件存在它正在执行其工作但是当文件不存在时它不会。
编辑:因为我很难在评论中提出代码,我在这里试试:D
user::user(string aaa)
{
string filepath;
name=aaa;
filepath= name + "/mails.txt";
mkdir(name.c_str(),0666);
//toch("mails.txt",0600);
log.open(name.c_str(), ios::in|ios::out|ios::ate);
if(!log.is_open()){
log.close();
log.open(name.c_str(), ios::in|ios::out|ios::trunc);
}
if(!log.is_open())cout<<"error"<<endl;
log<<flush;
cout<<"message written"<<endl;
}
如果有一个像mkdir这样的系统commant用于创建.txt,那么我认为这也有帮助
答案 0 :(得分:2)
使用ios::in
时,Fstream无法创建文件。它只能打开现有文件。
你应该做的,首先,检查它是否打开文件。如果没有,请关闭它,清除其状态,然后使用ios::out
打开 - 这将创建文件。
编辑:
如果指定ios::in
,则可以使用ios::trunc
创建文件。但是,如果文件存在,那么您将删除其所有内容。